可以在OpenCV中找到像Cwlabel在Matlab中的工作吗?

时间:2012-09-21 23:04:26

标签: c++ image matlab opencv

本期Q&一个网站建议我使用findContour来模仿Matlab中的bwlabel。但我不确定因为我认为轮廓是检测到的边缘的闭合形状,而bwlabel中的元素是连接的形状。我猜它们在逻辑上可能是一样的。他们在实践中怎么样?他们真的一样吗?

3 个答案:

答案 0 :(得分:1)

bwlabel将为您提供图像连接组件,即背景中不同连接对象的不同标签。

你的意思可能是im2bwimcontours提供的组合,即二值化图像和平滑地找到输出上每个保留对象的单个轮廓(边界)的组合。

考虑以下示例:

I = imread('coins.png'); % grayscale
level = graythresh(I); % find thershold
BW = im2bw(I, level); % threshold image
imcontour(BW, 1); % plot single contour 

enter image description here

对于灰度图像,您可以增加请求的轮廓数,但findContours对二进制图像进行操作。

答案 1 :(得分:1)

使用这两个库中的任何一个...... cvBlobslibcvblob ...您将获得许多关于连接组件的功能,例如大小和轮廓以及椭圆度和边界框......你可以过滤blob并添加togethar 2或更多blob ...尝试..在引擎盖下algo of bwlabel是一个双扫描连接组件,其中cvblob或cvBlobslib是一个扫描算法......

答案 2 :(得分:0)

我发现an exact article about this.快速回答是“是的,他们的最终输出将是相同的。”所以考虑到cvBlob仍然使用旧的C风格API并且有自己的查找轮廓的实现,我可能会继续使用findContour。