使用opencv进行多张图片进行翻转180度然后保存翻转后的图片
时间: 2023-12-30 22:04:26 浏览: 73
可以使用以下代码实现多张图片翻转180度并保存:
```python
import cv2
import os
# 定义要处理的图片路径和保存路径
image_folder = 'path/to/folder'
save_folder = 'path/to/save/folder'
# 遍历图片文件
for filename in os.listdir(image_folder):
# 读取图片
img = cv2.imread(os.path.join(image_folder, filename))
# 翻转图片
flipped_img = cv2.flip(img, 0)
# 保存翻转后的图片
cv2.imwrite(os.path.join(save_folder, 'flipped_' + filename), flipped_img)
```
其中,`cv2.imread`用于读取图片,`cv2.flip`用于翻转图片,`cv2.imwrite`用于保存翻转后的图片。
请注意,以上代码只适用于处理图片文件名没有空格的情况。如果图片文件名中有空格,需要在`os.listdir`中加入相应的处理方式。
相关问题
如何只能使用OpenCV或Numpy提供的功能,实现手动输入旋转角度、翻转图片
在Python中,你可以使用OpenCV(cv2)和NumPy这两个库来实现图片的旋转和翻转操作。以下是简单的步骤:
首先,确保已经安装了`opencv-python`和`numpy`库,如果没有可以使用以下命令安装:
```bash
pip install opencv-python numpy
```
然后,下面是手动输入旋转角度并翻转图片的代码示例:
```python
import cv2
import numpy as np
# 打开图片
img = cv2.imread('your_image_path.jpg')
# 用户输入旋转角度(以度为单位)
rotation_angle = float(input("请输入旋转角度:"))
# 将角度转换为弧度
rotation_rad = rotation_angle * np.pi / 180
# 计算旋转矩阵
M = cv2.getRotationMatrix2D((img.shape[1] // 2, img.shape[0] // 2), rotation_rad, 1)
# 应用旋转
rotated_img = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
# 图片翻转(垂直翻转为例,水平翻转会用到cv2.flip)
flip_type = int(input("请选择翻转类型(0 - 水平,1 - 垂直,-1 - 两者都翻):"))
if flip_type == 0:
flipped_img = cv2.flip(rotated_img, 0)
elif flip_type == 1:
flipped_img = cv2.flip(rotated_img, 1)
else:
flipped_img = cv2.flip(rotated_img, -1)
# 显示或保存结果
cv2.imshow("Rotated and Flipped Image", flipped_img)
cv2.waitKey(0) # 等待用户按键,按任意键关闭窗口
cv2.destroyAllWindows()
```
在这个例子中,我们先读取图片,然后获取用户输入的旋转角度,并计算旋转矩阵。接着应用这个矩阵对图片进行旋转,最后根据用户选择的翻转类型对旋转后的图片进行翻转。
如何只能使用OpenCV或Numpy提供的功能,实现图片手动输入旋转角度、翻转
在Python中,你可以使用OpenCV (Open Source Computer Vision Library) 和 NumPy (数值计算库) 来处理图像并实现旋转和翻转操作。以下是简单的步骤:
1. **安装依赖**:
首先,确保已经安装了这两个库。如果没有,可以使用`pip`安装:
```bash
pip install opencv-python numpy
```
2. **导入所需模块**:
```python
import cv2
import numpy as np
```
3. **读取图片**:
使用`cv2.imread()`加载图片:
```python
img = cv2.imread('image.jpg')
```
4. **旋转图片**:
OpenCV提供了一个函数`getRotationMatrix2D()`用于生成旋转矩阵,然后使用`warpAffine()`应用该矩阵进行旋转:
```python
angle_degrees = 90 # 输入旋转角度(例如顺时针90度)
angle_radians = angle_degrees * np.pi / 180
center = tuple(img.shape[1::-1] // 2)
rot_mat = cv2.getRotationMatrix2D(center, angle_radians, 1.0)
rotated_img = cv2.warpAffine(img, rot_mat, img.shape[:2])
```
5. **水平翻转图片**:
可以通过将每一行反转实现水平翻转,也可以直接调用`flip()`函数:
```python
flipped_img_h = cv2.flip(rotated_img, 0) # 水平翻转(0表示沿x轴)
```
6. **垂直翻转图片**:
类似地,垂直翻转可以这样做:
```python
flipped_img_v = cv2.flip(flipped_img_h, 1) # 垂直翻转(1表示沿y轴)
```
7. **显示结果**:
```python
cv2.imshow("Original", img)
cv2.imshow("Rotated and Flipped", flipped_img_v)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文