2012-10-17 28 views
2

在我的项目中我使用cvFindContours来检测对象。 有了结果,我想标记输入图像的roi(如果检测到的斑点之间的距离很高,我想迭代roi的标记)。如何合并2个CvRects与cvContour结果的最小距离

我的问题是,从找到的斑点几个rects重叠或是一个更大的斑点的一部分。 是否有一个快速的解决方案来移除内部斑点并以最小距离合并斑点?

例如:

+0

增加一个示例图像表示赞赏。 –

回答

1

您可以检查是否矩形使用operator& of cv::Rect overlaping:

cv::Rect a(x1,y1,w1,h1); 
cv::Rect b(x2,y2,w2,h2); 
cv::Rect intersect = a&b; // if intersect is not empty, the rect overlaps 

至于你的“最小距离”,有没有办法做到这一点使用标准OpenCV的功能。你必须确定矩形之间的“距离”是什么:它们中心之间的距离(不推荐)?边界之间的距离?然后提醒你有2个维度。你可以做到,但你必须自己编写代码。

+0

嗨,我在JavaCV中实现了这一点。谢谢 –