1.标记联通区域,给图中加上小红星,效果如图:
原图:
效果图:
image=imread('arrow.jpg');
bw=im2bw(image);
[bw_label,n]=bwlabel(bw); %bwlabel用来标记联通区域,bw_label跟bw的大小一样,从上到下,从左至右,从1开始依次标记连通分量
figure,imshow(bw);
%figure,imshow(bw_label,[]); 归一化操作,原本为逻辑图:零为零,非零当做一,变成八位图后,映射到0-255之间相应的值,由于不会存在小数,故可能会丢失数据。
%colormap hot;伪彩色,给灰度图加颜色。有多个属性值。
for i=1:n
[r,c]=find(bw_label==i);
mc=mean(c);%找到该联通区域中所有不为0的点的坐标后,求其均值,可以得到其重心所在的位置。
mr=mean(r);
hold on;%让前面的imshow等一下
plot(mc,mr,'r*');%绘制红色的*
end
2.数硬币个数:
分析:
1.思路与上一个一样,但是在标记连通分量前需要填充小坑洞。
bw=imfill(bw,'holes');
2.显示硬币个数的代码:
s=strcat