Python OpenCV仿射变换实现详细指南

【Python OpenCV仿射变换实现详细指南】OpenCV的是用于计算机视觉, 机器学习和图像处理的庞大的开放源代码库, 现在它在实时操作中起着重要作用, 这在当今的系统中非常重要。通过使用它, 人们可以处理图像和视频来识别物体, 面部, 甚至是人类的笔迹。当与各种库(例如Numpuy)集成时, Python能够处理OpenCV数组结构以进行分析。
注意:有关更多信息, 请参阅OpenCV Python教程
仿射变换 在仿射变换中, 原始图像中的所有平行线在输出图像中仍将平行。为了找到变换矩阵, 我们需要输入图像中的三个点以及它们在输出图像中的对应位置。然后cv2.getAffineTransform将创建一个2×3矩阵, 该矩阵将传递给cv2.warpAffine.
cv2.getAffineTransform方法:

语法:cv2.getPerspectiveTransform(src, dst)
参数:
src:源图像中四边形顶点的坐标。
dst:目标图像中相应四边形顶点的坐标。
cv2.warpAffine方法:
语法:cv2.warpAffine(src, M, dsize, dst, flags, borderMode, borderValue)参数:src:输入图像。 dst:输出图像, 其大小为dsize, 并且类型与src相同。 M:变换矩阵。 dsize:输出图像的大小。标志:插值方法(请参阅resize())和可选标志WARP_INVERSE_MAP的组合, 这意味着M是逆变换(dst-> src)。 borderMode:像素外推法;当borderMode = BORDER_TRANSPARENT时, 表示目标图像中与源图像中的"离群值"相对应的像素未被该函数修改。 borderValue:在边界不变的情况下使用的值;默认情况下为0。
示例1:
import cv2 import numpy as np from matplotlib import pyplot as pltimg = cv2.imread( 'food.jpeg' ) rows, cols, ch = img.shapepts1 = np.float32([[ 50 , 50 ], [ 200 , 50 ], [ 50 , 200 ]])pts2 = np.float32([[ 10 , 100 ], [ 200 , 50 ], [ 100 , 250 ]])M = cv2.getAffineTransform(pts1, pts2) dst = cv2.warpAffine(img, M, (cols, rows))plt.subplot( 121 ) plt.imshow(img) plt.title( 'Input' )plt.subplot( 122 ) plt.imshow(dst) plt.title( 'Output' )plt.show()# Displaying the image while ( 1 ):cv2.imshow( 'image' , img) if cv2.waitKey( 20 ) & 0xFF = = 27 : breakcv2.destroyAllWindows()

输出如下:
Python OpenCV仿射变换实现详细指南

文章图片
示例2:
import cv2 import numpy as np from matplotlib import pyplot as pltimg = cv2.imread( 'food.jpeg' ) rows, cols, ch = img.shapepts1 = np.float32([[ 50 , 50 ], [ 200 , 50 ], [ 50 , 200 ]])pts2 = np.float32([[ 10 , 100 ], [ 200 , 50 ], [ 100 , 250 ]])M = cv2.getAffineTransform(pts1, pts2) dst = cv2.warpAffine(img, M, (cols, rows))plt.subplot( 121 ) plt.imshow(img) plt.title( 'Input' )plt.subplot( 122 ) plt.imshow(dst) plt.title( 'Output' ) plt.show()# Displaying the image while ( 1 ):cv2.imshow( 'image' , img) if cv2.waitKey( 20 ) & 0xFF = = 27 : breakcv2.destroyAllWindows()

输出如下:
Python OpenCV仿射变换实现详细指南

文章图片
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

    推荐阅读