9

これは、C で OpenCV を使用した画像内のテキストの検出に関するプロジェクトに関するものです。プロセスは、対応する輪郭の内側と外側の色を検出することであり、その方法は、等間隔の位置で輪郭に法線を描画して抽出することです。法線の終点の対応する位置のピクセルの色。

次のコードを使用してこれを実装しようとしていますが、機能していません。つまり、法線を描画しますが、等間隔ではありません。

for( ; contours!=0 ; contours = contours->h_next )
{
        CvScalar color = CV_RGB( rand()&255, rand()&255, rand()&255 );

        cvDrawContours( cc_color, contours, color, CV_RGB(0,0,0), -1, 1, 8, cvPoint(0,0) );
        ptr = contours;
        for( i=1; i<ptr->total; i++)
        {
         p1 = CV_GET_SEQ_ELEM( CvPoint, ptr, i );

         p2 = CV_GET_SEQ_ELEM( CvPoint, ptr, i+1 );

         x1 = p1->x;
         y1 = p1->y;

         x2 = p2->x;
         y2 = p2->y;
         printf("%d %d     %d %d\n",x1,y1,x2,y2);
         draw_normals(x1,y1,x2,y2);
     }
}

輪郭の長さを見つけて、描画したい法線の数で割ることができる方法はありますか。前もって感謝します。

編集: draw_normal 関数は、パラメーターとして渡された 2 点間の法線を描画します。

4

1 に答える 1

13

では、輪郭の長さを見つける方法はありますか?

はい、OpenCV の標準関数 を使用して輪郭の長さを求めることができますcvarcLength()

ここでドキュメントを確認してください。

于 2012-06-21T06:49:08.470 に答える