2012-02-19 16 views
1

OpenCV Matを指定した角度だけ回転させるコードを書いています。次のコードを使用して、マットを中心の周りで回転させるのに成功しましたが、イメージが正方形ではないため、回転イメージの中心は新しいイメージの中心ではなく、イメージの一部は新しいマット。回転したOpenCVマットの翻訳方法

Point2f src_center(source.cols/2.0F, source.rows/2.0F); 
Mat rot_mat = getRotationMatrix2D(src_center, angle, 1.0); 

Mat final; 

final.create(calculateHeight(source.cols, source.rows, angle), calculateWidth(source.cols, source.rows, angle), CV_32FC1); 
warpAffine(source, final, rot_mat, final.size()); 

注: calculateHeightとcalculateWidthは、単にオリジナルマット、それが回転していること角度の大きさに基づいて、新しいマットのサイズを決定する方法です。

例:Original imageはに回転:rotated image

私は結果の回転マットが境界内にセンタリングされるようにマットを回転させるにはどうすればよいですか?

+0

@ rold2007この質問はあなたがリンクした質問の2年前に尋ねられました。上記の質問は私がその時に探していたものを持っていますが、それは重複しています。 – KSletmoe

+0

はい、私は前に気づいたが、あなたの質問には受け入れられた答えがないので、他の方法はできない。私はこれがどのように処理されるのかわからないので、司会者は知っていると思っていました。 – rold2007

答えて

0

回転させたい画像を十分大きな画像の中央にコピーし、新しい画像を回転させるだけです。

+0

コピーしたイメージを新しいイメージの中心にするにはどうすればよいですか? – KSletmoe

関連する問題