Python openCV アフィン変換
アフィン変換とは線形変換(拡大縮小、剪断、回転)と並行移動を組み合わせたもの。
数学的には行列の1次変換とベクトルの和ですね。変換前の辺の長さの比が変換後も変わらない。
指定には変換前、変換後の各3点の座標が必要
(1,0)→(a,c) (0,1)→(b,d)に変換して(tx,ty)分並行移動するので3点分の情報がいるのは納得
数学的には行列の1次変換とベクトルの和ですね。変換前の辺の長さの比が変換後も変わらない。

指定には変換前、変換後の各3点の座標が必要
(1,0)→(a,c) (0,1)→(b,d)に変換して(tx,ty)分並行移動するので3点分の情報がいるのは納得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import numpy as np import cv2 import matplotlib.pyplot as plt #Affine変換 img = cv2.imread("logo.png") rows,cols,ch = img.shape pts1 = np.float32([[50,50],[200,50],[50,200]]) pts2 = np.float32([[10,100],[200,50],[100,250]]) M = cv2.getAffineTransform(pts1,pts2) dst = cv2.warpAffine(img,M,(cols,rows)) plt.subplot(121),plt.imshow(img),plt.title('Input') plt.subplot(122),plt.imshow(dst),plt.title('Output') plt.show() |
コメント
コメントを投稿