在OpenCV中查找轮廓/对象之间的距离

4
我使用cvfindcontour找到了轮廓,现在我想访问第一个和第二个轮廓,并找到它们之间的欧几里得距离。有人可以帮我写这段代码吗?
CvPoint *contourPoint, *contourPoint2;
contourPoint = (CvPoint *)CV_GET_SEQ_ELEM(CvPoint,contours,1);
contourPoint2 = (CvPoint *)CV_GET_SEQ_ELEM(CvPoint,contours,2);
double dis = sqrt(double((contourPoint->x - contourPoint2->x) * (contourPoint->x - contourPoint2->x) + (contourPoint->y - contourPoint2->y) * (contourPoint->y - contourPoint2->y)) );

这样做是正确的吗?


1
先阅读C++手册,然后再查看OpenCV文档。你的问题表明你完全没有付出努力。 - Sam
是的,我明白,我本应该这样做,但由于早期截止日期的缘故,我没有足够的时间彻底学习东西。但是,截止日期之后我会详细研究。现在你能帮我吗? - Ayesha Khan
我已经编辑了代码,请告诉我,这是否是正确的方式? - Ayesha Khan
两个轮廓之间的距离可能因为测量距离的点的不同而有所不同。乍一看你的代码似乎是正确的 - 你尝试过编译和运行吗? - AruniRC
我已经尝试过了,它没有给出任何错误,但也没有显示正确的结果。实际上,我想要找到质心之间的距离,并且我已经使用cvmoments找到了质心,但是很难找到质心之间的距离。 - Ayesha Khan
显示剩余2条评论
1个回答

3
我会使用 cvMoments 来计算每个轮廓的质心,然后计算两个质心之间的 欧几里得距离。这里是关于它的一个 openframeworks 帖子:这里。这里是来自 opencv 邮件列表的帖子:这里。希望能有所帮助!

3
即使质心之间的距离很大,边界之间的距离也可以非常小。 - crenate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接