2012-09-02 76 views
4

可以请一些解释一个如何辨别哪些区域应该是在红色和蓝色在下面的图片?我试图使用cvFindContours()方法,但它没有给我预期的结果。opencv/javacv中的面积计算?

输入图像

enter image description here

预期结果

enter image description here 我想知道是否有任何其他的方法来识别或计算这种轮廓的面积。请善举分享简单的代码示例。

+0

看来,你可以简单地找到所有轮廓,并保持2名最大的,不是吗? –

+1

尝试使用cvBlobslib库...它具有给出blob区域的功能...在这里,您可以将白色补丁视为黑色背景上的斑点(.. border border ..)..http:// opencv .willowgarage.com /维基/ cvBlobsLib –

回答

0

功能floodFill还可以返回一个区域作为它的返回值。因此,您可以做的一件事就是对每个像素进行光栅扫描:每次到达未触摸的像素时,将其着色为某种颜色(黑色),并将该区域的区域与像素坐标一起存储,直到整个图像不被覆盖。

最后你会得到一组区域,每个区域有一个像素的坐标。

您是否需要通过将该区域着色为特定颜色来重新恢复特定区域,然后再次使用floodFill。