【python-opencv】图像几何变换
1、变换 OpenCV提供了两个转换函数cv.warpAffine和cv.warpPerspective,您可以使用它们进行各种转换。cv.warpAffine采用2x3转换矩阵,而cv.warpPerspective采用3x3转换矩阵作为输入。 import cv2 as cv from google.colab.patches cv2_imshow image=cv.imread('变换.jpg') # 得到图片的高和宽 height,width=image.shape[:2] 定义对应的点 points1 = np.float32([[75,55],[340,[33,435],[400,433]]) points2 = np.float32([[0,0],[360,[0,420],420]]) 计算得到转换矩阵 M = cv.getPerspectiveTransform(points1,points2) 实现透视变换转换 processed = cv.warpPerspective(image,M,(360,1)">)) cv2_imshow(processed) 结果: 参考:https://zhuanlan.zhihu.com/p/37023649 2、缩放 缩放只是调整图像的大小。为此,OpenCV带有一个函数cv.resize()。图像的大小可以手动指定,也可以指定缩放比例。也可使用不同的插值方法。首选的插值方法是cv.INTER_AREA用于缩小,cv.INTER_CUBIC(慢)和cv.INTER_LINEAR用于缩放。默认情况下,出于所有调整大小的目的,使用的插值方法为cv.INTER_LINEAR。您可以使用以下方法调整输入图像的大小 numpy as np cv2 as cv img = cv.imread(messi5.jpg) res = cv.resize(img,None,fx=2,fy=2,interpolation = cv.INTER_CUBIC) 或者 height,width = img.shape[:2] res = cv.resize(img,(2*width,2*height),interpolation = cv.INTER_CUBIC) 结果: 3、平移 平移是对象位置的转换。 如果你知道(x,y)方向的偏移,让它为(tx,ty),你可以创建变换矩阵M,如下所示: 可以将其设置为np.float32类型的Numpy数组,并将其传递给cv.warpAffine()函数. cv2 numpy as np img = cv2.imread(img.jpg,0) rows,cols = img.shape M = np.float32([[1,100],1,50]]) dst = cv2.warpAffine(img,(cols,rows)) cv2.imshow(imgdst |