Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 填补OpenCV中的漏洞

我有一个从OpenCV的边缘检测模块中提取的边缘贴图(Canny边缘检测)。我要做的是填补边缘贴图中的孔。

我正在使用C ++OpenCV库。在OpenCV中,有一个cvFloodFill()函数,它将用种子填充孔(其中一个位置开始填充)。但是,我试图在不知道种子的情况下填充所有内部孔(类似于MATLAB中的imfill()

问题1:如何查找所有种子,以便我可以应用“ cvFloodFill()”?
问题2:如何实现“ imfill()”等效项?

OpenCV中的新手,任何提示都值得赞赏。


回答:
根据MATLAB中imfill的文档:
BW2 = imfill(BW,'holes'); 填充二进制图像BW中的孔。孔是一组背景像素,无法通过从图像边缘填充背景来达到。

因此,要获取“孔”像素,请使用图像的左角像素作为种子来调用cvFloodFill 。您可以通过补充上一步中获得的图像来获得漏洞。

MATLAB示例:

BW = im2bw( imread('coins.png') ); subplot(121), imshow(BW) % used here as if it was cvFloodFill holes = imfill(BW, [1 1]); % [1 1] is the starting location point BW(~holes) = 1; % fill holes subplot(122), imshow(BW)



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 22:46


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.