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

ほぼ1日かけて答えを探し回った後、オブジェクトの幅と高さを取得する別の方法を見つけました。これは、 cvBoundingRect関数を使用することです。基本的に、輪郭の周りに直立した境界の長方形が作成されるので、ボックスの幅と高さを取得するだけで、必要なものを取得できます。

コード:

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

ところで、すべてのあなたの助けに感謝します。乾杯。

于 2012-11-16T09:19:30.500 に答える