アフィン変換とは
アフィン変換は、画像のスケーリング、回転、並進など、2次元空間での線形変換と並進変換を組み合わせたものです。OpenCVでは、cv2.warpAffine()
関数を使用してアフィン変換を適用できます。
cv2.warpAffine()
の使用方法
cv2.warpAffine()
関数は、第1引数に変換を行う画像を指定し、第2引数で変換行列を、第3引数で変換後の出力する画像のサイズを指定します。
dst = cv2.warpAffine(src, M, (w, h))
ここで、src
は入力画像、M
はアフィン変換行列、(w, h)
は出力画像のサイズです。
アフィン変換の例
以下に、画像の拡大縮小と回転を行うアフィン変換の例を示します。
import cv2
import numpy as np
# 画像を読み込む
img = cv2.imread("sample.jpg")
h, w = img.shape[:2]
# 拡大縮小のアフィン変換行列を作成
M_scale = np.array([[2, 0, 0], [0, 2, 0]], dtype=float)
# 画像にアフィン変換行列を適用する
dst = cv2.warpAffine(img, M_scale, (w * 2, h * 2))
# 回転のアフィン変換行列を作成
center = w / 2, h / 2
M_rot = cv2.getRotationMatrix2D(center=center, angle=30, scale=1)
# 画像にアフィン変換行列を適用する
dst = cv2.warpAffine(img, M_rot, (w, h))
このように、PythonとOpenCVを使用すると、簡単に画像に対してアフィン変換を適用することができます。.