那给我一个数据增强的python脚本
时间: 2024-03-07 20:07:19 浏览: 16
以下是一个基于 Python 的简单数据增强脚本示例:
```python
import cv2
import numpy as np
import os
# 定义数据增强方法
def augment_data(image):
# 随机水平翻转
if np.random.random() < 0.5:
image = cv2.flip(image, 1)
# 随机旋转
angle = np.random.randint(-10, 10)
M = cv2.getRotationMatrix2D((image.shape[1] / 2, image.shape[0] / 2), angle, 1)
image = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))
# 随机缩放
scale = np.random.uniform(0.8, 1.2)
image = cv2.resize(image, None, fx=scale, fy=scale)
# 随机裁剪
x = np.random.randint(0, image.shape[1] - 224)
y = np.random.randint(0, image.shape[0] - 224)
image = image[y:y+224, x:x+224]
return image
# 定义数据集路径
data_dir = 'data'
# 遍历数据集中的每张图片
for root, dirs, files in os.walk(data_dir):
for file in files:
# 读取图片
image = cv2.imread(os.path.join(root, file))
# 进行数据增强
augmented_image = augment_data(image)
# 保存增强后的图片
cv2.imwrite(os.path.join(root, 'augmented_' + file), augmented_image)
```
上述代码中,我们首先定义了一个 `augment_data` 函数,用于进行数据增强。在函数中,我们随机对图像进行水平翻转、旋转、缩放和裁剪等变换,从而扩充数据集的多样性。
然后,我们遍历数据集中的每张图片,读取图片并进行数据增强,最后将增强后的图片保存到指定目录下。需要注意的是,这里的增强后的图片命名为 `augmented_` + 原始图片名,以便于区分。
需要根据具体需求和数据集进行调整和优化。