图像的仿射变换 # 定义:仿射变换是图像旋转,缩放,平移的总称 仿射API:warpAffine(src,M,dsize,flags,mode,value) M:变换矩阵 flags: 与resize中的插值算法一直 mode:边界外推法标志(可省略) value:填充边界的值(可省略) # 平移矩阵 M = np.float32([[1, 0, 100], [0, 1, 200]]) # 变化矩阵一M getRotationMatrix2D(center,angle,scale) center:中心点 angle:角度,逆时针旋转 scale:缩放比例 # 变换矩阵二,根据三个点制作M, getAffineTransform(src[],dst[])
示例:
import numpy as np
import cv2 as cv
dog = cv.imread('./img/dog.jpg')
h,w,ch = dog.shape
# 单元矩阵偏移,其中100,200是偏移量
# M = np.float32([[1, 0, 100], [0, 1, 200]])
# 变换矩阵M,getRotationMatrix2D(中心点,逆时针角度,缩放比例)
# M = cv.getRotationMatrix2D((w/2,h/2),15,0.8)
# 变换矩阵二,根据几个点制作M,getAffineTransform(src[],dst[]
src = np.float32([[400,300],[650,300],[400,600]])
dst = np.float32([[200,400],[450,500],[150,850]])
M = cv.getAffineTransform(src,dst)
# 仿射API,M为仿射的方式
new = cv.warpAffine(dog,M,(w,h))
print(new.shape)
cv.imshow('new',new)
cv.waitKey(0)