帮帮忙!!谁会用matlab把这张二值图像中的连通区域分别用最小外接矩形框定,把代码写出来就行了
2个回答
展开全部
1)imread把图片读进去
2)设定黑白的标准大于0.5的认为是白色,小于0.5的认为是黑色;将读进去的图片转化为只含01的矩阵。
3)从上往下一行行的检测,发现某一行存在1,就记录这一行;然后继续检测,直到某一行中没有1,再记录没有1的这一行。
4)同理,从左往右一列列检测,记录出现1的列,和不再出现1的列。
5)根据3)和4)就可以确定矩阵的边界了,用比它大一圈像素标注一下就好了。
ps:如何检测一行存在1;比如矩阵A 的i行。if any(A(i,:)==1)
2)设定黑白的标准大于0.5的认为是白色,小于0.5的认为是黑色;将读进去的图片转化为只含01的矩阵。
3)从上往下一行行的检测,发现某一行存在1,就记录这一行;然后继续检测,直到某一行中没有1,再记录没有1的这一行。
4)同理,从左往右一列列检测,记录出现1的列,和不再出现1的列。
5)根据3)和4)就可以确定矩阵的边界了,用比它大一圈像素标注一下就好了。
ps:如何检测一行存在1;比如矩阵A 的i行。if any(A(i,:)==1)
更多追问追答
追问
科那个不是面积最小的矩形吧
可那不是面积最小的矩形吧
展开全部
[l,mm]=bwlabel(img2,8);%img2为二值图
status=regionprops(l,'BoundingBox'); %%画外接矩形
hold on;
for i=1:mm
rectangle('position',status(i).BoundingBox,'edgecolor','r');
end
hold off;
aa=zeros(mm,4);
a=status;
for ig=1:mm
aa(ig,1:4)=a(ig).BoundingBox;
end
status=regionprops(l,'BoundingBox'); %%画外接矩形
hold on;
for i=1:mm
rectangle('position',status(i).BoundingBox,'edgecolor','r');
end
hold off;
aa=zeros(mm,4);
a=status;
for ig=1:mm
aa(ig,1:4)=a(ig).BoundingBox;
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询