この記事では、PythonのOpenCVで画像を回転・反転する方法を紹介する。
ここではcv2.rotate()とcv2.flip()を使い、画像を回転・反転する。
これらの関数は、引数として画像(NumPy配列ndarray)と回転・反転条件を渡して使用する。
関数と主な引数
cv2.rotate(src, rotateCode)
src | 画像(NumPy配列ndarray) |
rotateCode | 回転角度の設定 <引数の例> cv2.ROTATE_90_CLOCKWISE: 時計回りに90°回転 cv2.ROTATE_180: 180°回転 cv2.ROTATE_90_COUNTERCLOCKWISE: 反時計回りに90°回転 |
cv2.flip(src, flipCode)
src | 画像(NumPy配列ndarray) |
flipCode | 反転方向の設定 <引数の例> 0: 上下反転 正の整数、1など: 左右反転 負の整数、-1など: 上下左右反転 |
使用例
以下の風景写真を例に、使用例を示す。
先にライブラリのインポートと、写真の読み込みを行う。
Code:
import cv2
import matplotlib.pyplot as plt
# 画像の読み込み
img = cv2.imread('./pic/landscape.jpg')
画像をcv2.rotate()で回転
時計周りに90°回転
時計周りに90°回転する場合は、第二引数にcv2.ROTATE_90_CLOCKWISEを指定する。
Code:
# 画像を時計回りに90°回転
img_v = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
# 回転画像の表示
plt.figure(figsize=(7,7))
plt.imshow(cv2.cvtColor(img_v, cv2.COLOR_BGR2RGB))
plt.show()
Output:
180°回転
180°回転する場合は、第二引数にcv2.ROTATE_180を指定する。
Code:
# 画像を時計回りに90°回転
img_v = cv2.rotate(img, cv2.ROTATE_180)
# 回転画像の表示
plt.figure(figsize=(7,7))
plt.imshow(cv2.cvtColor(img_v, cv2.COLOR_BGR2RGB))
plt.show()
Output:
反時計周りに90°回転
反時計周りに90°回転する場合は、第二引数にcv2.ROTATE_90_COUNTERCLOCKWISEを指定する。
Code:
# 画像を時計回りに90°回転
img_v = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE)
# 回転画像の表示
plt.figure(figsize=(7,7))
plt.imshow(cv2.cvtColor(img_v, cv2.COLOR_BGR2RGB))
plt.show()
Output:
画像をcv2.flip()で反転
上下反転
上下方向に反転する場合は、第二引数に0を指定する。
Code:
# 画像を上下反転
img_v = cv2.flip(img, 0)
# 反転画像の表示
plt.figure(figsize=(7,7))
plt.imshow(cv2.cvtColor(img_v, cv2.COLOR_BGR2RGB))
plt.show()
Output:
左右反転
左右方向に反転する場合は、第二引数に1を指定する。
Code:
# 画像を上下反転
img_v = cv2.flip(img, 1)
# 反転画像の表示
plt.figure(figsize=(7,7))
plt.imshow(cv2.cvtColor(img_v, cv2.COLOR_BGR2RGB))
plt.show()
Output:
上下左右反転
上下左右方向に反転する場合は、第二引数に-1を指定する。
Code:
# 画像を上下反転
img_v = cv2.flip(img, -1)
# 反転画像の表示
plt.figure(figsize=(7,7))
plt.imshow(cv2.cvtColor(img_v, cv2.COLOR_BGR2RGB))
plt.show()
Output:
コメント