Matlab - Seguimiento coche slot con webcam

   
Vista:

Seguimiento coche slot con webcam

Publicado por Roger (1 intervención) el 25/09/2014 15:48:43
Hola a todos!
Soy nuevo éste magnifico foro.

Estoy haciendo el PFG y necesito vuestra ayuda.
El objetivo del proyecto es el seguimiento de un coch de slot (Ninco) a traves de una webcam para controlar la velocidad, utilizando una webcam, Arduino y el Matlab.

A continuación os muestro el código en Matlab, que me sigue el coche y me muestra en cada instante el sitio en cordenadas xy en que se encuentra el coche, pero me faltaría poder calcular la velocidad del coche en cada instante.

close all;clear all;clc;
arduino=serial('COM6','BaudRate',9600);
fopen(arduino);

vid=videoinput('winvideo',1,'YUY2_640X480');
vid.ROIPosition = [5 19 621 328];
set(vid,'TriggerRepeat',Inf);
vid.returnedcolorspace='rgb';
vid.FrameGrabInterval=2;
start(vid)

while(vid.FramesAcquired<=100)
data1=getdata(vid,1);
data=imcomplement(data1);
diff_im = imsubtract(data(:,:,3), rgb2gray(data));
diff_im=medfilt2(diff_im,[3 3]);
diff_im=im2bw(diff_im,0.1);
diff_im=bwareaopen(diff_im,1100);
bw=bwlabel(diff_im,8);
stats=regionprops(bw,'BoundingBox','Centroid');
imshow(data1)
hold on
for object = 1:length(stats)
bb=stats(object).BoundingBox;
bc=stats(object).Centroid;
rectangle('Position',bb,'EdgeColor','Y','LineWidth',2);
plot(bc(1),bc(2),'-m+');
a=text(bc(1)+15,bc(2), strcat('X:', num2str(round(bc(1))), 'Y:', num2str(round(bc(2)))));
set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'green');
eixos(n) = bc(1);
n=n+1;
disp(bc(1));

%La siguiente condición es para probar que realiza un cambio de
%velocidad cuando passa por la posición 300 del eje de las X)

if (bc(1)>=300)
fwrite(arduino,255);
end
if (bc(1)<300)
fwrite(arduino,180);
end

end
hold off
end
stop(vid);
flushdata(vid);
fwrite(arduino,0);
fclose(arduino);



Espero vuestra ayuda y comentarios para mejorar el código.

¡'Gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder