How to remove time lag and multiple centroid in this code?

The cursor does not follows red color properly and it detects white and various other color also. currently i am doing virtual mouse using color detection. this is code please help.
clear all
close all
clc
import java.awt.Robot
m=Robot;
v=videoinput('winvideo',1,'YUY2_640x480');
set(v,'ReturnedColorSpace','YCbCr');
v.FramesPerTrigger=inf;
v.FrameGrabInterval=1;
pause(1)
while (v.FramesAcquired<=35)
i=getsnapshot(v);
% i=imresize(i,2);
% imtool(im_resized)
first_comp=i(:,:,1);
% imtool(first_comp)
rgb_2_gray=rgb2gray(i);
% imtool(rgb_2_gray)
d=first_comp-rgb_2_gray;
% imtool(d)
b=im2bw(d,.1);
bw=bwareaopen(b,500);
imshow(bw);
hold on;
% end;
% % bw=bwlabel(bw,8);
% % imtool(bw)
p=regionprops(bw,'centroid');
for z=1:length(p)
a=p(z).Centroid;
plot(a(1),a(2),'r*');
m.mouseMove(a(1),a(2));
end;
end;

1 Commento

For your reference, your code is now much more readable because I applied this formatting button to it,

Accedi per commentare.

 Risposta accettata

It's just not a very robust color segmentation algorithm. You might be better off going to hsv color space. See my File Exchange. However one of the methods I use there does find red objects in RGB color space. http://www.mathworks.com/matlabcentral/fileexchange/26420-simplecolordetection

2 Commenti

This link was very helpful to understand quickly now will be able to detect green and blue color and perform clicking accordingly.
I just looked at it. It's not any more robust than yours was - in fact it's pretty much the same algorithm. Well, whatever, if it works in your specific situation, then fine.

Accedi per commentare.

Più risposte (1)

Thank you sir good to know. I will improve the robustness in code.

Categorie

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by