2012-08-28 226 views
1

檢測最大的Blob我想檢測我的項目的二進制圖像最大BLOB。你能指導我如何做到這一點?二進制圖像

感謝

+1

開始好點的將是CVBloblib http://opencv.willowgarage.com/wiki/cvBlobsLib – jlengrand

回答

5

使用findContours找到圖像中的所有斑點,用contourArea可以計算出斑點的面積。所以只需找到最大面積的輪廓(斑點)。

+0

喜阿斯特, 非常感謝你的建議。它確實幫了很大忙。 我使用的查找方法的輪廓,發現一個人的形象最大的輪廓在一個統一的背景。但是不是人是最大的輪廓,它認爲背景是最大的輪廓。併爲一些圖像留下一些空的斑點。你能幫我弄清楚爲什麼會發生這種情況,我該如何填補人體內的那些洞。 對不起壞xplanation。我希望你能理解我的問題。 – user1606191

2

開始好點的將是CVBloblib。我過去使用它,它工作正常。

然後,它僅僅是一個計算的斑點面積或周長,這取決於你想要什麼:)

0

我不知道什麼是最好的做法在這裏的問題,但我願意做它在某種程度上是這樣:

  • 首先找到所有的斑點。你可以使用cvBlobslib或cvBlob或findContours等
  • 然後,所有的斑點存儲載體。按照blob的區域對你的矢量進行排序。然後得到最後一個blob。

    bool sortBlobsASC(CBlob first,CBlob second){ return first.Area()< second.Area(); }

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