cv2.warpAffine用法
时间: 2023-11-27 07:04:56 浏览: 76
cv2.warpAffine是OpenCV中的一个函数,用于应用仿射变换(Affine Transformation)来对图像进行变换。它的用法如下:
语法:cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
参数:
- src:输入的图像。
- M:变换矩阵,是一个2x3的浮点型矩阵。
- dsize:输出图像的大小。
- dst:输出图像,可选参数。
- flags:插值方式的标志,默认为cv2.INTER_LINEAR。
- borderMode:边界填充方式的标志,默认为cv2.BORDER_CONSTANT。
- borderValue:边界填充的像素值,默认为0。
返回值:返回变换后的图像。
示例:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
rows, cols = img.shape[:2]
# 定义变换矩阵
M = np.float32([[1, 0, 100], [0, 1, 50]])
# 应用仿射变换
dst = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)
```
上述代码中,我们读取了一张图片,并定义了一个2x3的变换矩阵M,然后应用了仿射变换,将图片向右平移100个像素,向下平移50个像素。最后将原图和变换后的图像显示出来。
注意事项:
- 变换矩阵M的第一行为[a11, a12, b1],第二行为[a21, a22, b2],其中a11, a12, a21, a22是旋转和缩放的系数,b1, b2是平移的距离。
- dsize参数可以指定输出图像的大小,也可以和输入图像的大小一样。
- flags参数可以指定插值方式,常用的有cv2.INTER_LINEAR和cv2.INTER_NEAREST。
- borderMode参数可以指定边界填充方式,常用的有cv2.BORDER_CONSTANT和cv2.BORDER_REPLICATE。
阅读全文