当前位置: 首页 > news >正文

数据增强操作

如何对图片进行处理?

import os
import cv2
from glob import glob
import albumentations as A
from tqdm import tqdm# ==== 配置区域 ====
# 原始数据
images_dir = "./train/images"
labels_dir = "./train/labels"# 增强后保存
save_images_dir = "./train_aug/images"
save_labels_dir = "./train_aug/labels"
N = 5  # 每张图片生成的随机增强图数量os.makedirs(save_images_dir, exist_ok=True)
os.makedirs(save_labels_dir, exist_ok=True)# 数据增强组合(随机组合)
transform = A.Compose([A.GaussianBlur(blur_limit=(3,7), p=0.5),  # 高斯模糊A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, p=0.5),  # 亮度/对比度A.Rotate(limit=15, border_mode=cv2.BORDER_CONSTANT, p=0.5),  # 旋转A.GaussNoise(var_limit=(10.0, 50.0), p=0.5),  # 高斯噪声
], bbox_params=A.BboxParams(format='yolo', label_fields=['class_labels']))# ==== 处理每张图片 ====
image_paths = glob(os.path.join(images_dir, "*.jpg"))for img_path in tqdm(image_paths):filename = os.path.basename(img_path)name, ext = os.path.splitext(filename)# 读取图像image = cv2.imread(img_path)# 读取标签label_path = os.path.join(labels_dir, f"{name}.txt")bboxes = []class_labels = []if os.path.exists(label_path):with open(label_path, "r") as f:for line in f.readlines():parts = line.strip().split()class_id = int(parts[0])x_center, y_center, bw, bh = map(float, parts[1:])bboxes.append([x_center, y_center, bw, bh])class_labels.append(class_id)# 生成 N 张随机组合增强图for i in range(N):augmented = transform(image=image, bboxes=bboxes, class_labels=class_labels)aug_image = augmented['image']aug_bboxes = augmented['bboxes']aug_labels = augmented['class_labels']# 保存图像save_img_path = os.path.join(save_images_dir, f"{name}_aug{i+1}{ext}")cv2.imwrite(save_img_path, aug_image)# 保存标签save_label_path = os.path.join(save_labels_dir, f"{name}_aug{i+1}.txt")with open(save_label_path, "w") as f:for bbox, label in zip(aug_bboxes, aug_labels):x_c, y_c, bw, bh = bboxf.write(f"{label} {x_c:.6f} {y_c:.6f} {bw:.6f} {bh:.6f}\n")print(f"随机组合数据增强完成,每张图片生成 {N} 张增强图!")

 

http://www.hskmm.com/?act=detail&tid=26871

相关文章:

  • HTML5实现简洁的端午节节日网站源码 - 实践
  • Visio的图片,粘到word中显示不全,右边和下面显示不出来
  • 25国庆总结
  • 某平台增强排序脚本
  • 印度乡村AI计划:用JAN AI打造人工智能优先村庄
  • # Java方法学习:动手动脑与课后实验整理
  • CF2155D Batteries
  • JAVA语法基础》动手动脑与实验问题全整理
  • 崩铁壁纸
  • PotPlayer 播放器
  • 10.8动手动孬
  • [迷宫寻路 Round 3] 七连击
  • 《程序员修炼之道:从小工到专家》阅读笔记
  • [笔记]树论笔记+做题记录
  • 云服务器部署大数据组件
  • 规模化网站SSL证书终极方案
  • 详细介绍:录制mp4
  • 10月8日
  • 【OpenGL ES】光栅化插值原理和射线拾取原理
  • HTML 速查列表 - 教程
  • Exp1
  • 20_uv_wsl_installation
  • 学习问题日记-4
  • Codeforces Round 1042 (CF2131) 补题笔记(A-E)
  • 在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名AI编程助手框架需求探索
  • 表格数据自动机器学习技术解析
  • 10/8
  • 2025.10.8
  • 【QT】QString 与QString区别 - 教程
  • 连通分量tarjan学习笔记