我有一个包含多个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)?
答案 0 :(得分:3)
如果无法升级您的OpenCV,您仍然可以从OpenCV3.0中实现connectedComponents并将其植入您自己的代码中。 OpenCV是一个开源项目。您可以获得implementation of connectedComponents() from gitHub。
还有其他方法可以获得像素数,但它们效率非常低。例如,您可以使用drawContours()函数在某些空图像上逐个绘制findContours()找到的轮廓,并使用countNonZero()计算非黑色像素的数量。