如何只能使用OpenCV或Numpy提供的功能,对照片实现几何变换:缩放(手动输入缩放宽高比)、旋转(手动输入旋转角度、翻转)
时间: 2024-11-04 12:10:13 浏览: 22
在Python中,使用OpenCV (Open Source Computer Vision Library) 和 Numpy 进行照片的几何变换是非常常见的操作。以下是步骤:
1. **导入库**:
首先,你需要导入`cv2`(OpenCV)和`numpy`库:
```python
import cv2
import numpy as np
```
2. **读取图片**:
使用`cv2.imread()`函数加载图像:
```python
img = cv2.imread('your_image.jpg')
if img is None:
print("无法打开图片")
```
3. **缩放(缩放比例)**:
对于缩放,你可以使用`cv2.resize()`函数。例如,如果要将图像缩小到原尺寸的一半:
```python
scale_percent = 50 # 缩小50%
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
resized_img = cv2.resize(img, dim, interpolation=cv2.INTER_LINEAR)
```
4. **旋转(角度)**:
`cv2.getRotationMatrix2D()`用于获取旋转矩阵,然后`cv2.warpAffine()`用于应用旋转:
```python
angle = 45 # 逆时针旋转45度
center = (img.shape[1] // 2, img.shape[0] // 2) # 图像中心点
rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated_img = cv2.warpAffine(img, rotation_matrix, img.shape[:2])
```
5. **翻转**:
水平翻转可以使用`cv2.flip()`函数,垂直翻转则需要组合旋转:
```python
flipped_horizontally = cv2.flip(img, 1) # 水平翻转
# 或者
# flipped_vertically = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE) # 垂直翻转
```
6. **保存结果**:
变换完成后,使用`cv2.imwrite()`保存处理后的图片。
阅读全文