Python利用OpenCV图片平移旋转变换
时间: 2024-09-25 13:10:56 浏览: 93
Python中使用OpenCV进行图像平移、旋转变换通常通过`cv2.warpAffine`或`cv2.getRotationMatrix2D`函数来实现。这两个函数分别用于应用二维仿射变换和旋转变换。
1. 平移变换:`cv2.warpAffine`需要一个仿射矩阵,可以通过计算源点到目标点的偏移量来得到。例如,如果你想将图像向右上角移动5像素,可以创建这样的变换矩阵:
```python
import cv2
import numpy as np
src_points = (0, 0), (img_width, img_height) # 图像的左下角和右上角
dst_points = (5, 5), (img_width + 5, img_height + 5) # 目标位置
# 计算仿射变换矩阵
M = np.float32(dst_points).reshape(-1, 2)
shift = np.float32(src_points).reshape(-1, 2) - M
# 应用变换
translated_image = cv2.warpAffine(img, M, (img_width, img_height))
```
2. 旋转变换:`cv2.getRotationMatrix2D`则基于中心点、角度和缩放比例来生成旋转矩阵。假设你想顺时针旋转90度:
```python
center = (img_width // 2, img_height // 2) # 中心点
angle = -90 # 正数代表逆时针旋转
scale = 1 # 缩放比例保持不变
# 获取旋转矩阵
rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)
# 执行旋转
rotated_image = cv2.warpAffine(img, rotation_matrix, (img_width, img_height))
```
阅读全文