我有一个从边缘检测模块中提取的边缘图OpenCV(精明的边缘检测)。我想做的是填补边缘图中的漏洞。
我在用C++, and OpenCV图书馆。在OpenCV中有一个cvFloodFill()函数,它将用种子填充孔(以及开始淹没的位置之一)。然而,我试图在不知道种子的情况下填补所有内部的洞。(类似于imfill()在 MATLAB 中)
Q1:如何找到所有种子,以便我可以应用“cv FloodFill()”?
Q2:如何实现“imfill()”等效项?
OpenCV 新手,如有任何提示,我们将不胜感激。
根据文档imfill在 MATLAB 中:
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)