获取仿射矩阵
方程法:
cv2.getAffineTransform(src,dst)
参数:
src:二维矩阵,3对原始坐标,必须float
dst:二维矩阵,3对转换坐标,必须float
矩阵法:
cv2.getRotationMatrix2D(center,angle,scale)
中心坐标,角度,缩放比例
cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
参数说明
对于图像缩放,不需要放射矩阵
resieze(str,dst,dsize,fx,fy,interpolation)
参数:
src:输入图像矩阵
dst:输出图像矩阵
dsize:(w,h)
fx:水平缩放
fy:垂直缩放
插值法
顺时针旋转90,180,270
cv2.rotate(src,dst,rotatecode)
参数:
src,dst 输入出图像
import numpy as np
import cv2,sys,math
image = cv2.imread('E:\\sy2\\3\\img.jpg',cv2.IMREAD_GRAYSCALE)
#cv2.imwrite('E:\\sy2\\3\\img1.jpg',image)
#原图高宽
h,w = image.shape[:2]#注意返回值高,宽
#缩小2倍
A1 = np.array([[0.5,0,0],[0,0.5,0]],np.float32)
d1 = cv2.warpAffine(image,A1,(w,h),borderValue=125)
#先缩小2倍,再平移
A2 = np.array([[0.5,0,w/4],[0,0.5,h/4]],np.float32)
d2 = cv2.warpAffine(image,A2,(w,h),borderValue=125)
#绕中心点旋转
A3 = cv2.getRotationMatrix2D((w/2.0,h/2.0),30,1)
d3 = cv2.warpAffine(d2,A3,(w,h),borderValue=125)
cv2.imshow('image',image)
cv2.imshow('d1',d1)
cv2.imshow('d2',d2)
cv2.imshow('d3',d3)
cv2.waitKey(0)
cv2.destroyAllWindows()