cv2.getAffineTransform() 和 cv2.warpAffine() 函数
时间: 2024-02-06 21:03:03 浏览: 24
cv2.getAffineTransform() 和 cv2.warpAffine() 函数是 OpenCV 库中用于图像几何变换的两个重要函数。
cv2.getAffineTransform() 函数用于获取一个变换矩阵,该矩阵可以将一个三角形区域映射到另一个三角形区域。通常,该函数用于实现图像仿射变换,例如旋转、平移、缩放等。
cv2.warpAffine() 函数使用获取到的变换矩阵对图像进行变换。该函数接受三个参数:源图像、变换矩阵和输出图像的大小。通过调用该函数,可以将源图像变换为指定大小的输出图像。
下面是一个使用 cv2.getAffineTransform() 和 cv2.warpAffine() 函数实现图像仿射变换的示例代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('input.jpg')
# 定义三角形的三个点
src = np.float32([[50, 50], [200, 50], [50, 200]])
# 定义新三角形的三个点
dst = np.float32([[70, 100], [180, 70], [100, 192]])
# 获取仿射变换矩阵
M = cv2.getAffineTransform(src, dst)
# 应用仿射变换
output = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
# 显示结果
cv2.imshow('Input', img)
cv2.imshow('Output', output)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先定义了源图像中的三角形区域和新图像中的三角形区域。然后使用 cv2.getAffineTransform() 函数获取变换矩阵,并通过 cv2.warpAffine() 函数对图像进行变换。最后,我们将变换前后的图像显示在屏幕上。