教你使用Python实现遍历文件夹进行图像增强

1. 问题背景

当做图像分类等计算机视觉任务时,数据集中图像数量及质量,直接影响着深度学习模型训练的效果。对数据集图像进行增强扩充是一个很好的解决办法。

2. 环境要求

  • Python
  • Opencv-python
  • imgaug

3. 实现代码

如: 这是待增强的图像文件夹,一共四个类别,每个类别文件夹里包含着相应的图像。
在这里插入图片描述
datasets 文件夹同目录下,放置增强执行代码,即
augment.py

import os
import cv2
from imgaug import augmenters as iaa

# 定义数据增强的方法,这里使用了 imgaug 库
seq = iaa.Sequential([
    iaa.Fliplr(0.5),  # 左右翻转
    iaa.Affine(rotate=(-10, 10))  # 旋转
])

input_dir = 'datasets'
output_dir = 'aug_datasets'

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

for root, dirs, files in os.walk(input_dir):
    for subdir in dirs:
        subdir_path = os.path.join(root, subdir)
        output_subdir = subdir_path.replace(input_dir, output_dir)
        if not os.path.exists(output_subdir):
            os.makedirs(output_subdir)

        for file in os.listdir(subdir_path):
            if file.lower().endswith(('.png', '.jpg', '.jpeg', 'JPG')):
                image_path = os.path.join(subdir_path, file)
                image = cv2.imread(image_path)

                # 数据增强
                augmented_images = [seq.augment_image(image) for _ in range(3)]  # 扩充到原来的3倍,包括原图像

                for idx, img in enumerate(augmented_images):
                    output_path = os.path.join(output_subdir, f"{file.split('.')[0]}_aug{idx}.jpg")
                    cv2.imwrite(output_path, img)

执行完毕后,新的文件夹aug_datasets里,就有着增强之后的图像

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHXC浩瀚星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值