2010-11-30 23 views
2

私は、入力画像で&のcvFindContorsを実行して作成したCvSeq *でcvApproxPoly()を実行して作成したポリゴンを含むCvSeq *を持っています。 CvSeq *から返された各ポリゴンのCvPointにアクセスしたいと思います。コードは、これまで次のように(概説IplImageへ入力画像W B &含有である):cvApproxPoly()によって作成されたポリゴンのポイントを取得する

//create pointers to store data we're going to be calculating 
CvMemStorage* storage = cvCreateMemStorage(); 
CvSeq* first_contour = NULL; 
CvSeq* first_polygon = NULL; 

//find the contours (edges) of the silhouette, in terms of pixels. 
cvFindContours(&outlines, 
       storage, 
       &first_contour, 
       sizeof(CvContour), 
       CV_RETR_LIST); 

//convert the pixel contours to line segments in a polygon. 
first_polygon = cvApproxPoly(first_contour, 
          sizeof(CvContour), 
          storage, 
          CV_POLY_APPROX_DP, 
          2, 
          1); 

私が画像上にポリゴンを描画するcvDrawContourを使用することができるが、私はそれぞれを定義各2D点を反復します等高線。 CvSeq * first_polygonの各要素は、1つのポリゴンのポイントセットを含んでいるようです(first_polygon-> totalの値に基づいて結論づけられましたが、個々のポイントにアクセスする方法はわかりません)。

答えて

5

あなたは、多角形の頂点を反復するcvGetSeqElemを使用することができます。 squares.cサンプル中/ cはこの事を実施している。

+0

あなたにもjavacvで利用できるという方法かどうかを教えていただけますか? –

3

CvSeq *は多次元です。例:cvSeq-> total;は最初の次元(各ポリゴン)です。例えば、cvSeq-> first-> totalは2番目の次元です(ポリゴンの各点)。

関連する問題