In [1]:
import cv2
import numpy as np
In [2]:
img = cv2.imread('data/src/lena.jpg')
In [3]:
h, w, c = img.shape
In [4]:
src_pts = np.array([[30, 30], [50, 200], [350, 50]], dtype=np.float32)
dst_pts = np.array([[90, 20], [140, 170], [280, 80]], dtype=np.float32)
In [5]:
mat = cv2.getAffineTransform(src_pts, dst_pts)
print(mat)
In [6]:
img_mark = img.copy()
for pt in src_pts:
cv2.drawMarker(img_mark, tuple(pt), (0, 255, 0), thickness=4)
cv2.imwrite('data/dst/opencv_affine_mark_src.jpg', img_mark)
Out[6]:
In [7]:
affine_img = cv2.warpAffine(img_mark, mat, (w, h))
cv2.imwrite('data/dst/opencv_affine_mark_dst.jpg', affine_img)
Out[7]:
In [8]:
affine_img_mark = affine_img.copy()
for pt in dst_pts:
cv2.drawMarker(affine_img_mark, tuple(pt), (255, 0, 0), markerType=cv2.MARKER_SQUARE, thickness=4)
cv2.imwrite('data/dst/opencv_affine_mark_dst_mark.jpg', affine_img_mark)
Out[8]:
In [9]:
src_pts = np.array([[30, 30], [50, 200], [350, 50]], dtype=np.float32)
dst_pts = np.array([[140, 170], [280, 80], [90, 20]], dtype=np.float32)
In [10]:
mat = cv2.getAffineTransform(src_pts, dst_pts)
print(mat)
In [11]:
affine_img = cv2.warpAffine(img_mark, mat, (w, h))
cv2.imwrite('data/dst/opencv_affine_mark_dst_another.jpg', affine_img)
Out[11]: