前回は変換元と変換後の三点を指定し画像を回転しました。
今回は変換パラメータを指定してアフィン変換行列を計算してみます。
変換パラメータを指定するには、Imgproc.getRotationMatrix2D()メソッドを使用します。
Imgproc.getRotationMatrix2D(Point center, double angle, double scale)
Point center 回転の中心点
double angle 回転角度
double scale 拡大倍率
angleが正の値であれば反時計回りを意味します。
ちなみに単位は度(degree)で90なら単純に90度です。
角度の単位には度に始まり、ラジアンやらゴンやら歩兵ミルやら色々あります。
この手の話になるとラジアンが良く出てきますが、直感的にイメージ出来ないのであまり好きではないです。
「度」最高。
それでは実際にやってみましょう。
まずは元画像です。
30度回転してみます。
Point center = new Point(0.0, 0.0); double angle = 30.0; double scale = 1.0; Mat affineTrans = Imgproc.getRotationMatrix2D(center, angle, scale); Imgproc.warpAffine(mat, dstMat, affineTrans, dstMat.size());
パラメータを少し変更してみます。
Point center = new Point(100.0, 100.0); double angle = 30.0; double scale = 0.2; Mat affineTrans = Imgproc.getRotationMatrix2D(center, angle, scale); Imgproc.warpAffine(mat, dstMat, affineTrans, dstMat.size());
borderModeを指定してみます。
Point center = new Point(100.0, 100.0); double angle = 30.0; double scale = 0.2; Mat affineTrans = Imgproc.getRotationMatrix2D(center, angle, scale); Imgproc.warpAffine(mat, dstMat, affineTrans, dstMat.size(), Imgproc.INTER_LINEAR,Imgproc.BORDER_REFLECT);
またまたサイケな画像がw
でも今回は狙い通りです。
0 コメント:
コメントを投稿