長方形の輪郭で凸包を実行する C (C++ ではない) コードを書いています。そのための(非常に単純化された)コードは次のようになります。
CvSeq* contours;
CvSeq* hull;
cvFindContours( img, &contours, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, CvPoint(0,0) );
hull = cvConvexHull2( contours, storage, CV_CLOCKWISE, 0 );
img
とはどちらcontours
も有効です。これらの行の間にはさらに多くのものがありますが、その FindContours 部分は動作することがテストされています。
このコードは例外をスローします: Error: Bad argument (Unsupported sequence type) in cvApproxPoly .
問題は、シーケンスをポリラインとして識別するフラグが設定されていないことであると言われ、提案を試みましたがhull->flags = hull->flags | 512
、おそらく2008年から現在までの間にフラグが変更されたため、機能しません。
問題は、cvConvexHull2() の結果に対して cvApproxPoly() を使用するにはどうすればよいかということです。cvApproxPoly() の適切な引数は何ですか?