用python 的cv2库编写一个程序,使图像沿顺时针方向旋转,在旋转的同时先缩小到10%,然后从10%开始放大到100%,再按此规律缩小、放大。
时间: 2024-11-09 19:29:49 浏览: 47
在Python中,我们可以使用OpenCV (cv2) 库来处理图像旋转、缩放等操作。下面是一个简单的示例程序,它会按照您描述的方式顺时针旋转图像,并在每次操作之间循环缩小和放大:
```python
import cv2
import numpy as np
def resize_and_rotate(image_path):
# 加载图像
img = cv2.imread(image_path)
# 设置初始缩放比例和旋转角度
scale_ratio = 0.1
rotation_angle = 0
while True:
# 缩小图像
resized_img = cv2.resize(img, None, fx=scale_ratio, fy=scale_ratio)
# 计算新的图像大小和中心点
height, width = resized_img.shape[:2]
center = (width // 2, height // 2)
# 顺时针旋转图像
rotation_matrix = cv2.getRotationMatrix2D(center, rotation_angle, 1.0)
rotated_img = cv2.warpAffine(resized_img, rotation_matrix, (width, height))
# 显示旋转后的图像
cv2.imshow("Rotated and Rescaled Image", rotated_img)
# 获取用户输入,如果按下 'q', 则退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 每次旋转后增加一定的角度
rotation_angle += 45
# 放大图像回原始大小前的一个点
scale_ratio *= 1.1
# 关闭窗口
cv2.destroyAllWindows()
# 使用您的图片路径替换 "image_path"
resize_and_rotate("image_path.jpg")
```
在这个程序中,我们首先读取图像,然后在一个无限循环中逐步缩小并旋转。每次循环结束后,都会检测用户的键盘输入是否为 'q' 来决定是否退出循环。图像会在每次循环中按顺时针旋转45度,直到用户选择停止。
阅读全文