仿射变换CV.WarpAffine (1)将一副图像顺时针旋转45°,分别用3种不同插值方法(修改flags参数),比较不同方法的效果; (2)对一副图像进行水平和垂直错切30°操作的代码
时间: 2023-05-15 10:05:22 浏览: 98
(1)以下是三种不同插值方法的代码示例:
```python
import cv2
img = cv2.imread('image.jpg')
rows, cols = img.shape[:2]
# 顺时针旋转45度
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)
# 最近邻插值
dst1 = cv2.warpAffine(img, M, (cols, rows), flags=cv2.INTER_NEAREST)
# 双线性插值
dst2 = cv2.warpAffine(img, M, (cols, rows), flags=cv2.INTER_LINEAR)
# 像素区域插值
dst3 = cv2.warpAffine(img, M, (cols, rows), flags=cv2.INTER_AREA)
# 显示结果
cv2.imshow('nearest', dst1)
cv2.imshow('bilinear', dst2)
cv2.imshow('pixel area', dst3)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
(2)以下是水平和垂直错切30度的代码示例:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
rows, cols = img.shape[:2]
# 水平错切
M = np.float32([[1, 0.5, 0], [0, 1, 0]])
dst1 = cv2.warpAffine(img, M, (cols, rows))
# 垂直错切
M = np.float32([[1, 0, 0], [0.5, 1, 0]])
dst2 = cv2.warpAffine(img, M, (cols, rows))
# 显示结果
cv2.imshow('horizontal shear', dst1)
cv2.imshow('vertical shear', dst2)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
注意:以上代码仅供参考,具体实现方式可能因应用场景不同而有所不同。