programnya.....
close all;
clear all;
clc;
% spesifikasi format webcam yang digunakan
vid=videoinput('winvideo',1,'YUY2_320x240');
set(vid,'TriggerRepeat',Inf);
vid.returnedcolorspace='rgb';
vid.FrameGrabInterval=2;
start(vid)
while(vid.FramesAcquired<=200)
% mengambil citra dari video
data = getsnapshot(vid);
% Untuk mendeteksi objek berwarna merah yang bergerak
% Diperlukan pengurangan komponen warna merah
% Mengekstrak komponen warna merah dari citra grayscale
diff_im = imsubtract(data(:,:,1), rgb2gray(data));
% Filterisasi menggunakan filter median untuk menghilangkan noise
diff_im = medfilt2(diff_im, [3 3]);
% Konversi grayscale ke biner
diff_im = im2bw(diff_im,0.18);
% Menghilangkan semua pixel kurang dari 300 px
diff_im = bwareaopen(diff_im,300);
% Memberi label semua komponen yang terkoneksi pada citra
bw = bwlabel(diff_im, 8);
% Berikut ini adalah sintak untuk mengkarakterisasi tiap bagian label.
stats = regionprops(bw, 'BoundingBox', 'Centroid');
% Menampilkan citra hasil snapshot
imshow(data)
hold on
% Berikut adalah logika loop untuk membuat box kotak yang mengitari objek warna merah.
for object = 1:length(stats)
bb = stats(object).BoundingBox;
bc = stats(object).Centroid;
rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
plot(bc(1),bc(2), '-m+')
bc(2)
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','red');
end
hold off
end
stop(vid)
0 comments:
Post a Comment