检测二进制图像中的最大Blob

时间:2012-08-28 11:07:50

标签: c image-processing opencv

我想检测项目的二进制图像中最大的BLOB。你能指导我怎么做这个吗?

由于

3 个答案:

答案 0 :(得分:5)

使用findContours查找图片中的所有blob,并使用contourArea计算blob的区域。所以只需找到面积最大的轮廓(blob)。

答案 1 :(得分:2)

一个好的开始点是CVBloblib。我过去使用它,它工作正常。

那么这只是计算blob区域或周长的问题,具体取决于你想要的东西:)

答案 2 :(得分:0)

我不知道这里的最佳做法是什么,但我会这样做:

  • 首先找到所有blob。您可以使用cvBlobslib或cvBlob或findContours等。
  • 然后将所有blob存储在向量中。按blob区域对矢量进行排序。然后得到最后一个blob。

    bool sortBlobsASC(首先是CBlob,第二个是CBlob){         首先返回.Area()< second.Area(); }

    std :: sort(myvec.begin(),myvec.end(),sortBlobsASC);