Python : 画像の回転 角度指定Opencv

PythonOpencvを使った画像の回転方法についてです。

角度を指定して回転する方法で、

OpencvのgetRotationMatrix2DとwarpAffine変換を使ってやります。

 

まずはopencvの読み込みを行います。

import cv2

 

その後、画像を読み込み、今回は画像の中心を指定するので

画像の中心を読み込むために、画像のサイズを読み込みます。


frame = cv2.imread('lena_angle.jpg')

h,w,c = frame.shape

今回使う画像も前にfilpの反転で使わせていただいたLenaさんです。

f:id:Kangkang1981:20200425115816j:plain

 

中心を指定

center = (int(w/2),int(h/2))

回転角を指定
angle = 45
スケールを指定
scale = 1

 

その後、getRotationMatrix2D関数を使い、変更する条件を入れ込みます。

カッコの中は(回転の中心、角度、スケール)
trans = cv2.getRotationMatrix2D(center, angle , scale)
アフィン変換をします。

カッコの中は(回転させる画像、回転の条件、サイズ)
frame_45 = cv2.warpAffine(frame, trans, (w,h))

 

f:id:Kangkang1981:20200426224521j:plain

画像を保存します。
cv2.imwrite('angle_45.jpg',frame_45)

 

下記が全プログラムです。

#モジュールの読み込み
import cv2

#画像を読み込む
frame = cv2.imread('lena_angle.jpg')

#画像のサイズ読み込み
h,w,c = frame.shape

#回転の中心を指定
center = (int(w/2),int(h/2))

#回転角を指定
angle = 45
#スケールを指定
scale = 1
#getRotationMatrix2D関数を使用
trans = cv2.getRotationMatrix2D(center, angle , scale)
#アフィン変換
frame_45 = cv2.warpAffine(frame, trans, (w,h))

#画像を保存
cv2.imwrite('angle_45.jpg',frame_45)

今までにpythonについて書いた記事はここにリンクを貼ってあります。

興味があればぜひご覧ください。