opencv 原始的图像完成平移,沿x轴移动100像素,y轴移动50像素,并显示原始图像和平移后的图像。 2.对上题原始的图像完成旋转,图像逆时针方向旋转30度,并缩小80%,并显示原始图像和旋转后的图像。
时间: 2024-11-05 16:26:42 浏览: 1
使用OpenCV实现仿射变换—平移功能
在OpenCV中,你可以通过`cv2.warpAffine()`函数来处理图像的平移和旋转操作。这里是一个简单的步骤示例:
1. **平移图像**:
```python
import cv2
import numpy as np
# 加载图像
img = cv2.imread('input_image.jpg')
# 定义平移矩阵 (dx, dy) 表示沿着x轴和y轴的偏移量
translation_matrix = np.float32([[1, 0, 100], [0, 1, 50]])
# 使用warpaAffine函数进行变换
translated_img = cv2.warpAffine(img, translation_matrix, img.shape[:2])
# 显示原图和平移后的图像
cv2.imshow("Original Image", img)
cv2.imshow("Translated Image", translated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
2. **旋转和缩放图像**:
```python
# 计算旋转矩阵,角度逆时针转为正角度
angle_degrees = -30
scale_percent = 80 # 缩小比例,100%表示不变
# 计算旋转和平移矩阵
height, width = img.shape[:2]
center = (width // 2, height // 2)
rotation_matrix = cv2.getRotationMatrix2D(center, angle_degrees, scale_percent / 100)
zoomed_and_rotated_matrix = rotation_matrix @ np.array([[scale_percent, 0], [0, scale_percent]], dtype=np.float32)
rotated_img = cv2.warpAffine(img, zoomed_and_rotated_matrix, img.shape[:2])
# 显示原图和旋转后的图像
cv2.imshow("Original Image", img)
cv2.imshow("Rotated and Resized Image", rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上代码假设你已经有了名为"input_image.jpg"的输入图片。记得替换为你实际的图片路径,并确保运行环境已经安装了OpenCV库。运行上述代码后,你应该能看到原图及其经过平移和旋转后的版本。
阅读全文