python利用OpenCV的cv2.getRotationMatrix2D()和cv2.warpAffine()函数编写一个图像旋转的程序,要求图像以自己的中心点为基准,绕顺时针旋转45°,缩放百分之50。
时间: 2024-01-21 21:20:16 浏览: 134
好的,以下是代码实现:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('example.jpg')
# 获取图像中心点坐标
rows, cols = img.shape[:2]
center = (cols/2, rows/2)
# 定义旋转矩阵
M = cv2.getRotationMatrix2D(center, -45, 0.5)
# 进行仿射变换
rotated_img = cv2.warpAffine(img, M, (cols, rows))
# 显示原始图像和旋转后的图像
cv2.imshow("Original Image", img)
cv2.imshow("Rotated Image", rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
解释一下代码:
1. 使用 `cv2.imread()` 函数读取一张图像。
2. 使用 `img.shape` 获取图像的行数和列数,并计算出图像中心点的坐标。
3. 使用 `cv2.getRotationMatrix2D()` 函数获取旋转矩阵,参数分别为中心点坐标、旋转角度(这里设为-45度,表示顺时针旋转45度)、缩放比例(这里设为0.5,表示缩小50%)。
4. 使用 `cv2.warpAffine()` 函数进行仿射变换,参数分别为原始图像、旋转矩阵、输出图像大小(这里设为原始图像大小)。
5. 使用 `cv2.imshow()` 函数显示原始图像和旋转后的图像。
6. 使用 `cv2.waitKey()` 函数等待用户按下任意键。
7. 使用 `cv2.destroyAllWindows()` 函数关闭所有窗口。
阅读全文