Python OpenCV 画像の回転・反転 rotate・flip

OpenCV

この記事では、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:

コメント

タイトルとURLをコピーしました