如何使用opencv函数计算图像的孔数(二进制)

时间:2014-02-27 21:59:27

标签: c++ opencv components eulers-number

我想计算欧拉数,所以我需要连接组件的数量和图像中的孔数。我找到了如何查找连接组件的数量。使用此代码;

vector<vector<Point>>contours;
vector<Vec4i>hierarchy; 
findContours(mat,contours,hierarchy,CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE ); 
objects_num=contours.size(); 

但我不确定用于计算连接组件的正确代码。你知道这段代码是对的吗?

其次**但是我不知道如何计算洞的数量?opencv doc说所有的轮廓都被组织成一个两层的层次结构, 你知道如何获得这些洞的数量。

2 个答案:

答案 0 :(得分:1)

我正在尝试从该图像中提取特征。例如,我需要euler number,filledArea属性。为此原因;我试图找出黑色素瘤图片中的孔数和连接组件的数量。你知道找到这些属性的任何功能吗?

PS:我正在Android平台上使用opencv for android。

答案 1 :(得分:0)

所以,我可以建议你开始研究OpenCV如何处理blob(以及描述blob的轮廓)。

如果您对区域,质心等blob属性感兴趣,可以使用image moments(另请查看here)。

尝试查看那些处理“寻找漏洞”的教程,herehere