图像几何变换操作,使用cv2.warpAffine逆时针旋转图片45°,截屏,提交代码。
时间: 2024-05-11 14:13:47 浏览: 12
```python
import cv2
img = cv2.imread('image.jpg')
rows, cols = img.shape[:2]
# 旋转矩阵
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)
# 仿射变换
img_rotate = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow('img', img)
cv2.imshow('img_rotate', img_rotate)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码中,我们使用了 `getRotationMatrix2D()` 函数来获得旋转矩阵,第一个参数为旋转中心,第二个参数为旋转角度,第三个参数为缩放比例。然后使用 `warpAffine()` 函数对图像进行仿射变换。最后使用 `imshow()` 函数显示原图和旋转后的图像,使用 `waitKey()` 函数等待按键,使用 `destroyAllWindows()` 函数关闭窗口。
相关问题
图像几何变换操作,使用cv2.warpAffine逆时针旋转图片45°
以下是使用cv2.warpAffine逆时针旋转图片45°的Python代码示例:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('lena.jpg')
# 获取图片尺寸
rows, cols = img.shape[:2]
# 定义旋转矩阵
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)
# 计算旋转后的图片尺寸
cos = np.abs(M[0, 0])
sin = np.abs(M[0, 1])
new_cols = int(rows*sin + cols*cos)
new_rows = int(rows*cos + cols*sin)
# 调整旋转矩阵的平移部分,确保图片不会被裁剪
M[0, 2] += (new_cols - cols) / 2
M[1, 2] += (new_rows - rows) / 2
# 应用旋转矩阵进行变换
rotated_img = cv2.warpAffine(img, M, (new_cols, new_rows))
# 显示原始图片和旋转后的图片
cv2.imshow('Original Image', img)
cv2.imshow('Rotated Image', rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
运行上述代码,可以得到如下结果:
![image](https://user-images.githubusercontent.com/70188709/124464329-25f4e080-ddc9-11eb-8b7f-3e3c7b019a8b.png)
可以看到,原始图片被逆时针旋转了45°。
cv2.warpAffine
cv2.warpAffine函数是OpenCV中的一个图像几何变换函数,用于进行仿射变换。该函数通过对输入图像应用线性变换矩阵M来生成输出图像。其中M是一个2x3的变换矩阵,dsize是输出图像的尺寸。
在具体使用该函数时,可以通过调整M矩阵的值来实现不同的仿射变换效果。例如,可以通过平移、缩放、旋转等操作对图像进行变换。函数还提供了一些可选参数,如flags用于指定插值方法,borderMode用于指定像素外推方法,borderValue用于指定恒定边框的像素值。
下面是一个代码示例:
```
import cv2
import numpy as np
# 读取图像
img = cv2.imread('input.jpg')
# 定义变换矩阵M
M = np.float32([[1, 0, 50], [0, 1, 50]])
# 进行仿射变换
result = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
# 显示结果图像
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```