本期Q&一个网站建议我使用findContour来模仿Matlab中的bwlabel。但我不确定因为我认为轮廓是检测到的边缘的闭合形状,而bwlabel中的元素是连接的形状。我猜它们在逻辑上可能是一样的。他们在实践中怎么样?他们真的一样吗?
答案 0 :(得分:1)
bwlabel
将为您提供图像连接组件,即背景中不同连接对象的不同标签。
你的意思可能是im2bw和imcontours提供的组合,即二值化图像和平滑地找到输出上每个保留对象的单个轮廓(边界)的组合。
考虑以下示例:
I = imread('coins.png'); % grayscale
level = graythresh(I); % find thershold
BW = im2bw(I, level); % threshold image
imcontour(BW, 1); % plot single contour
对于灰度图像,您可以增加请求的轮廓数,但findContours对二进制图像进行操作。
答案 1 :(得分:1)
使用这两个库中的任何一个...... cvBlobslib或cvblob ...您将获得许多关于连接组件的功能,例如大小和轮廓以及椭圆度和边界框......你可以过滤blob并添加togethar 2或更多blob ...尝试..在引擎盖下algo of bwlabel是一个双扫描连接组件,其中cvblob或cvBlobslib是一个扫描算法......
答案 2 :(得分:0)
我发现an exact article about this.快速回答是“是的,他们的最终输出将是相同的。”所以考虑到cvBlob仍然使用旧的C风格API并且有自己的查找轮廓的实现,我可能会继续使用findContour。