平移:
遍历像素即可,也可以用函数[ : , m:n ]
w,h,m= img.shape dst = np.zeros((w,h,m), np.uint8) for i in range(w-50): for j in range( h-60): dst[i+50, j+60] = img[i, j] dst[0:50,:]=img[0:50,:]
放大缩小:
依靠函数:cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)
img_test = cv.resize(img, (int(y / 2), int(x / 2)))
cv.namedWindow('OriginalPicture',cv.WINDOW_FREERATIO)
w,h=img.shape[0:2]
test = cv.resize(img,((2*w,2*h)))
cv.namedWindow('resize',cv.WINDOW_FREERATIO)
旋转:
rows,cols = img.shape
center=((cols-1)/2,(rows-1)/2)
M = cv2.getRotationMatrix2D(center,45,1)
#定义旋转矩阵,第一个参数是中心点,第二个参数是旋转角度,第三个参数是缩放比例
dst = cv2.warpAffine(img,M,(cols,rows),borderValue=200)
#进行变换,第一个参数是原图,第二个参数是变换矩阵,第三个参数是变换后的图像尺寸大小,第四个参数可省,为边界填充值,默认为0
变换矩阵法(理论上可以实现本文所有的几何变换):
def change_jvzhen(src1): rows,cols = src1.shape M = np.float32([[1,0,100], [0,1,500]])#定义变换矩阵,先列再行 dst = cv2.warpAffine(src1,M,(cols,rows))#仿射变换函数进行变换,第一个参数是原图,第二个参数是变换矩阵,第三个是输出图像的大小
镜像变换:
img1 = cv2.flip(img,1) #镜像 0表示绕×轴翻转; 1表示绕y轴翻转; -1表示绕×轴、y轴两个轴翻转。 参数3: 可选参数。用于设置输出数组
参考链接:https://mp.weixin.qq.com/s/rBROWai8xHh3OtTthFOpsA