在C ++中使用OpenCV查找每个blob中的像素数

时间:2015-08-06 09:52:18

标签: c++ opencv image-processing

我有一个包含多个blob的二进制图像。我想找到每个blob中的像素数。我的openCV版本低于3.0,所以我没有connectedComponents功能。我正在尝试findContour。如果图片为im,则执行findContour为:

cv::findContours(im.clone(), contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);

现在,contour[i]contourArea(contours[i]);的大小确实不会给出像素数。是否还有其他功能可以找到每个blob中的像素数?

A post建议使用cvBlobslib库,但OpenCV中是否有内置函数(版本低于3.0)?

1 个答案:

答案 0 :(得分:3)

如果无法升级您的OpenCV,您仍然可以从OpenCV3.0中实现connectedComponents并将其植入您自己的代码中。 OpenCV是一个开源项目。您可以获得implementation of connectedComponents() from gitHub

还有其他方法可以获得像素数,但它们效率非常低。例如,您可以使用drawContours()函数在某些空图像上逐个绘制findContours()找到的轮廓,并使用countNonZero()计算非黑色像素的数量。