アフィン変換(Affine transformation)

V3.0.0

任意の線形変換と平行移動を組合せた変換。

In [46]:
# -*- coding: utf-8 -*-
import cv2
import numpy as np
# Ipythonで表示用の設定
import matplotlib.pyplot as plt
%matplotlib inline

# 画像読込
in_img = cv2.imread("lena.jpg")

# 画像のサイズ(縦、横)、チャンネル数)を取得
h, w, ch = in_img.shape   

#アフィン変換行列の生成
#線形変換成分
a  = 1.3
b  = 0.2
c  = 0.8
d  = 1.2
#平行移動成分
tx = 100
ty =  50
matrix = [[a, b, tx],
          [c, d, ty]]  

affine_matrix = np.float32(matrix)

# アフィン変換実行
out_img = cv2.warpAffine(in_img,affine_matrix,(w*2,h*2))    

#OpenCVがBGRなのでRGBに変換
disp_in_img  = cv2.cvtColor(in_img,  cv2.COLOR_BGR2RGB)
disp_out_img = cv2.cvtColor(out_img, cv2.COLOR_BGR2RGB)

#画像表示
plt.figure(figsize=(5,5))
plt.subplot(211)
plt.imshow(disp_in_img)
plt.figure(figsize=(10,10))
plt.subplot(212)
plt.imshow(disp_out_img)
Out[46]:
<matplotlib.image.AxesImage at 0x20e8eff0>
inserted by FC2 system