一,图片的仿射变换
图片的仿射变换,需要根据图片的左上角,右下角及右上角来进行变换。
解析来就是代码部分:
import cv2
import numpy as np
img = cv2.imread('1.jpg', 1)
info = img.shape
cv2.imshow('src', img)
height = info[0]
width = info[1]
# 寻找图片的左上角,左下角和右上角
src = np.float32([[0, 0], [0, height-1], [width-1, 0]])
dst = np.float32([[50, 50], [300, height-200], [width-300, 100]])
# 组合两个矩阵
matdst = cv2.getAffineTransform(src, dst) # 矩阵组合API,两个参数要记住
findst = cv2.warpAffine(img, matdst, (width, height)) # 仿射变换API
cv2.imshow('image', findst)
cv2.waitKey(0)
仿射变换的结果是:
二、图片的旋转
图片的旋转,首先,定义一个旋转矩阵;旋转的API里面有三个参数,第一个是中心点,第二个是旋转的角度,第三个是缩放的系数,为何旋转要缩放呢:因为旋转之后可能会超出图片的范围,导致图片显示不完整。
源代码是:
import cv2
import numpy as np
img = cv2.imread('1.jpg', 1)
info = img.shape
cv2.imshow('src', img)
height = info[0]
width = info[1]
src = cv2.getRotationMatrix2D((height*0.5, width*0.5), 45, 0.5)
dst = cv2.warpAffine(img, src, (height, width))
cv2.imshow('dst', dst)
cv2.imshow(0)
得出的结果是: