python批量数据增强
时间: 2025-05-19 08:09:13 浏览: 18
### 使用 Python 进行批量数据增强
在机器学习和计算机视觉领域,图像数据增强是一种常用的技术,用于增加训练数据的多样性并提高模型性能。以下是几种常见的方法以及相应的代码示例。
#### 常见的数据增强操作
1. **旋转**: 可以通过调整角度来改变图像的方向。
2. **翻转**: 包括水平翻转和垂直翻转。
3. **缩放和平移**: 改变图像的比例或者移动其位置。
4. **亮度/对比度调整**: 调整像素值分布。
5. **裁剪**: 随机选取部分区域作为新图像。
6. **噪声注入**: 添加随机噪声模拟真实场景中的干扰因素。
这些变换可以通过多种库完成,比如 `OpenCV`、`Pillow (PIL)` 和 `scikit-image` 等工具包提供丰富的功能支持上述需求[^1]。
下面给出一段基于 OpenCV 实现基本图像增广的例子:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
def rotate_image(image, angle):
rows, cols = image.shape[:2]
M = cv2.getRotationMatrix2D((cols / 2, rows / 2), angle, 1)
dst = cv2.warpAffine(image, M, (cols,rows))
return dst
# 加载原图
image_path = 'example.jpg'
original_img = cv2.imread(image_path)
rotated_90 = rotate_image(original_img, 90) # 顺时针旋转90°
flipped_hori = cv2.flip(original_img, flipCode=1)# 水平镜像反转
brightened = cv2.addWeighted(original_img , alpha=1.5,beta=-80,gamma=0,dtype=cv2.CV_8UC1 )
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(12, 8))
axes[0][0].set_title("Original")
axes[0][0].imshow(cv2.cvtColor(original_img,cv2.COLOR_BGR2RGB ))
axes[0][1].set_title("Rotated by 90 degrees clockwise ")
axes[0][1].imshow(cv2.cvtColor(rotated_90 ,cv2.COLOR_BGR2RGB ))
axes[1][0].set_title("Horizontally Flipped ")
axes[1][0].imshow(cv2.cvtColor(flipped_hori ,cv2.COLOR_BGR2RGB ))
axes[1][1].set_title("Brightened Image ")
axes[1][1].imshow(cv2.cvtColor(brightened ,cv2.COLOR_BGR2RGB ))
plt.show()
```
此脚本展示了四种不同的预处理方式及其效果可视化[^2]。
另外一种简单实用的选择是利用 Pillow 库来进行更灵活的操作:
```python
from PIL import Image, ImageEnhance
input_filename='sample_input.png'
with Image.open(input_filename).convert('RGBA')as img:
enhancer = ImageEnhance.Brightness(img)
factor = 1.5 # 提高亮度因子
enhanced_brightness = enhancer.enhance(factor)
enhanced_brightness.save(f"{input_filename}_brightness_enhanced.png", quality=95 )
```
这段程序演示了如何仅通过几行代码就能轻松提升输入图片的整体明亮程度[^3]。
对于大规模自动化流程,则可以考虑编写循环结构逐一加载文件夹内的所有素材执行指定转换后再保存回磁盘上形成扩展版资料集。
阅读全文
相关推荐

















