计算轮廓的x,y轴长度

时间:2012-11-15 11:40:02

标签: c++ c image-processing opencv

每个人都过得愉快。

我仍在使用the same old program,到目前为止,我设法根据轮廓力矩的计算找到最大轮廓的面积和坐标。

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

......我得到的是:

The screenshot

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

What I need

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

提前致谢。欢呼声。

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

1 个答案:

答案 0 :(得分:0)

在我花了将近一天的时间去搜索答案后,我终于找到了另一种方法来获取对象的宽度和高度,这是通过使用 cvBoundingRect功能。基本上它会在轮廓周围形成一个直立的边界矩形,所以我只需要检索框的宽度和高度以获得我想要的东西。

代码:

    Rect rect= cvBoundingRect(contour,0);
    double pt1, pt2;
    pt1 =rect.width;      //width
    pt2 =rect.height;     //heigth
是的,谢谢你的帮助。干杯。