1

大家好。

我仍在使用相同的旧程序,到目前为止,我设法根据轮廓矩的计算找到了最大轮廓的面积和坐标。

double m_00 = cvGetSpatialMoment( &moments, 0, 0 ); //The area
double m_10 = cvGetSpatialMoment( &moments, 1, 0 );
double m_01 = cvGetSpatialMoment( &moments, 0, 1 );
float gravityX = (m_10 / m_00);     //center of x-axis              
float gravityY = (m_01 / m_00);     //center of y-axis

...我得到的是:

截图

...效果很好。但现在我想获取轮廓/对象的 x 轴和 y 轴的长度,如下所示:

我需要的

问题是有什么函数可以计算轮廓的x轴和y轴长度吗?如果是这样,任何人都可以给我一些线索如何做到这一点?

提前致谢。干杯。

P/S:我上面链接的程序是旧的,所以它有一些错误。

4

1 回答 1

0

在我花了将近一天的时间在谷歌上搜索答案后,我终于找到了另一种获取对象宽度和高度的方法,即使用 cvBoundingRect函数。基本上它会在轮廓周围形成一个直立的边界矩形,所以我只需要检索框的宽度和高度就可以得到我想要的。

编码:

    Rect rect= cvBoundingRect(contour,0);
    double pt1, pt2;
    pt1 =rect.width;      //width
    pt2 =rect.height;     //heigth

顺便说一句,感谢您的所有帮助。干杯。

于 2012-11-16T09:19:30.500 回答