2012-01-31 3 views
1

ROIを使用して、見つかったポリゴンをイメージ内の新しいイメージにコピーしたいと考えています。このポリゴンを新しい画像に正確に合わせたいと思います。 これまでのところ私はROIを使っていましたが、角度を考慮していないことに気づいたので、検出しようとするオブジェクトを回転させるとすぐに悪い結果になります。OpenCV:ROIを角度で設定しますか?

while(/****/) 
{ 
    CvSeq* approximatedContour = cvApproxPoly(currentContour, 
               sizeof(CvContour), 
               0, 
               CV_POLY_APPROX_DP, 
               8); 

    etiquetteBox = cvMinAreaRect2(approximatedContour); 
    CvSize2D32f sizeEtiquette = etiquetteBox.size; 

    if(/****/) 
    { 
     CvPoint2D32f boxPoints[4]; 
     cvBoxPoints(etiquetteBox, boxPoints); 

     cvSetImageROI(thresImg,cvRect((int)boxPoints[1].x, (int)boxPoints[1].y, 
         (int)sizeEtiquette.width,(int)sizeEtiquette.height)); 

     cvResize(thresImg,thresImgResized); 

     /*****/ 
    } 

は、ROIに角度を統合する方法を誰もが知ってい:私はここに

は、私が何をすべきかです...さらなる分析のためだけでは、このオブジェクトが必要?そうすることは可能ですか?

ありがとうございます!

答えて

3

RotatedRectからマスクを作成し、マスクで画像をコピーする必要があります。

EDITマスクを作る方法

新しいオリジナルと同じサイズの画像が、一つのチャンネルのみ8Uを作成します。 prefferedメソッドでゼロに設定します。 あなたの長方形、多角形、円、またはROIとして使用したいものを、あなたの好みの描画機能で描画します。例えば、DrawPoly。数字を255で入力してください。 画像を表示します。それは、黒い背景に白いポリゴンを含むべきです。

マスクパラメータとして使用します。

+0

こんにちはヴァシール、どうやってやるの? cvCopyの使用? cvCopyを使用する必要がある場合は、thresImgを最初のパラメータにし、rotateRectを3番目にマスクとして使用し、2番目のパラメータ(dest)は何ですか?私がよく分かっていれば、マスクの大きさのIplImageですか?どうも !!! – CTZStef

+0

編集を確認してください。 – Sam

+0

申し訳ありませんが、私はOpenCVの中の任意drawPoly機能を見つけることができない... – CTZStef

関連する問題