2016-07-07 12 views
0

ユースケースを考えると、特定の画像でROIを回転させたいと考えています。たとえば、画像内にあらかじめ定義されたバウンディングボックスがあり、ここでは、角度の代わりにこれらのボックス内の画像の一部を回転させることができます。画像内のROIを回転

さらに、回転は境界ボックス内にある必要があります。したがって、ROIは変換がクロップされた後です。

私は境界ボックスの部分画像を作成するアプローチで、回転させて元の画像の元の位置に戻すよりも、それを試しました。問題は、私には巨大なデータセット(> 100.000)があり、おそらく私の方法ではプロセスが遅くなると思います。

この変換を行う他の方法はありますか?

編集:より良い理解 Original Image

のためにそれは、変換後にどのように見えるべきか、迅速なモックアップです。

Rotatet

+0

を参照して下さい。数字か二? –

+0

あなたはそれまでのやり方についての詳細を提供していません。それはどのくらいかかりますか?遅いのは何ですか?あなたの意見ではどんなことが速いでしょうか?どの角度? – Piglet

+0

@ Cheersandhth.-Alf私は2つの画像を追加しました。 – loose11

答えて

0
Mat rotateMatImage (Mat& src, double angle ,Mat& cdst) { 

// Rotate the angle which using warpAffine Methods 
Mat rot_mat; 
Mat rotated; 
cv::Point2f src_center(cdst.cols/2.0F, cdst.rows/2.0F); 
rot_mat = getRotationMatrix2D(src_center, angle, 1.0); 

warpAffine(src, rotated, rot_mat, cdst.size(), cv::INTER_CUBIC); 

return rotated; 

}

希望の結果の説明にもう少し正確かもしれないドキュメントhttp://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html?highlight=warpaffine

0

あなたはCVを使用している場合::マット、yourMat(yourRectは)あなたに回転すべき画像のROIを提供します。これを実行する最速の方法は、ROIの四隅を目的地点まで回転させ、変換をROIに適用するのに必要なアフィン変換を計算することです。 ROI選択とアフィン変換を使用すると、ピクセル操作を自分で行うよりもはるかに高速ですが、アフィン変換を使用するよりも高速な方法があるかどうかはわかりません。