画像を回転させる
◉回転させる理由
画像検出を行う際、特定箇所を見つけるためには、
前もって様々なパターンを知っておく必要が出てくる。
パターンの中には上下が逆になっていたり、少し斜めになっていたりする状態でも
検出できる必要がある。
そのような、バリエーションを作るときに利用される。
◉回転させる方法
cv2.getRotationMatrix2D(回転の中心座標, 回転角度, 倍率)
⚫︎回転の中心座標:XとYの座標で指定(px)
⚫︎回転角度:反時計回りに回転させる角度(単位は度)
⚫︎倍率:回転と一緒に画像の倍率を変化させる
cv2.warpAffine(画像, 変換させる情報, 変換後の画像サイズ)
⚫︎画像:回転させたい画像
⚫︎変換させる情報:(今回は)回転の情報
⚫︎変換後の画像サイズ:縦と横のサイズを指定(px)
<画像を回転させるPythonコード例>
import sys
import cv2
if len(sys.argv)<2:
print('表示したいファイル名を指定してください。')
sys.exit()
file = sys.argv[1]
try:
img = cv2.imread( ' file ' )
if img is None:
raise ValueError('ファイルが見つかりません')
img_height = img.shape[0] #元画像の縦サイズ
img_width = img.shape[1] #元画像の横サイズ
img_center = (int(img_width/2),int(img_height/2)) #中心点を計算
img_rotate = cv2.getRotationMatrix2D(img_center, 20.0, 1.0)
effect = cv2.warpAffine(img, (img_rotate,(im_width, img_height))
cv2.imshow(file, effect)
cv2.waitKey(0)
cv2.destroyAllWindows()
except ValueError as e:
print(e)
except:
import traceback
traceback.print_exc()
※回転の中心座標は画像の中心となっているコード。
※回転角度は20度、変換後の画像サイズは1.0で等倍に指定しているコード。