我試圖找到「robocup的球」。因爲它是橙色的,所以我隔這個顏色和試驗後,如果它是圓的或不...我怎麼找到橙色的球?
下面是該方法不起作用的圖像,但對於其他人它的工作原理:
rgb = imread('E:/robot12.jpg');
imshow(rgb);
hsv=rgb2hsv(rgb);
h=hsv(: , : ,1);
s=hsv(: , : ,2);
v=hsv(: , : ,3);
bw= (h>0.05 & h<0.12) & (s>0.6) & (v> 0.51);
imagesc(bw)
colormap(gray)
se = strel('disk',2);
bw = imclose(bw,se);
bw = imfill(bw,'holes');
imshow(bw)
ball1 = bwareaopen(bw, 50);
imagesc(ball1);
lab = bwlabel(ball1);
s = regionprops(lab, 'Area', 'Perimeter');
sArea = [s.Area];
sPerim= [s.Perimeter];
metric= sPerim.^2/(4*pi.* sArea);
idx = find(metric > 0.7);
gr_fin = ismember(lab, idx);
imshow(gr_fin)
stat = regionprops(gr_fin,'centroid');
imshow(rgb); hold on;
for x = 1: numel(stat)
plot(stat(x).Centroid(1),stat(x).Centroid(2), 'wp','MarkerSize',20,'MarkerFaceColor','b');
end
我不知道如何解決它...
任何一個可以幫助我?
非常感謝很多兄弟,它確實有效 – siavash
高興它幫助。 :) –
並且度量標準也應該變爲'metric =(4 * pi。* sArea)./(sPerim。^ 2);' – siavash