2012-06-21 66 views
5

これは、OpenCVを使って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); 
    } 
} 

だから私は、私が描きたい法線の数でそれを分割することができますように、輪郭の長さを見つけるための方法があります。前もって感謝します。

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

+0

元画像、アップロードされた場合、あなたが得た、出力を所望の出力は、この質問 –

答えて

9

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

はい、OpenCV標準機能cvarcLength()を使用して輪郭の長さを見つけることができます。

Check Documentation here.

+0

[OK]を...それを得たために素晴らしいことだ。.. :) しかし、どのようにそれは長さを返すのですか?私はそれが輪郭周囲が構成するピクセルの数を返すと思った。だから私は戻り値の型が二重であることに気づいてちょっと混乱しました。 – bluechill

+0

ソースを確認する必要があります:http://code.opencv.org/projects/opencv/repository/entry/trunk/opencv/modules/imgproc/src/shapedescr.cpp(ライン45以降) –

+0

また、等高線doesnすべての境界点を持っている。その内容を確認するには、ここをクリックしてください:http://opencvpython.blogspot.in/2012/06/hi-this-article-is-tutorial-which-try.html –

関連する問題