import cv2
import numpy as np
import os
import glob
# 数据增强函数
def augment_data(img):
rows,cols,_ = img.shape
# 水平翻转图像
if np.random.random() > 0.5:
img = cv2.flip(img, 1)
img_name = os.path.splitext(save_path)[0] + "_flip.png"
cv2.imwrite(img_name, img)
print("Saved augmented image:", img_name)
# 随机缩放图像
scale = np.random.uniform(0.9, 1.1)
M = cv2.getRotationMatrix2D((cols/2, rows/2), 0, scale)
img_transformed = cv2.warpAffine(img, M, (cols, rows))
img_name = os.path.splitext(save_path)[0] + "_transform.png"
cv2.imwrite(img_name, img_transformed)
print("Saved augmented image:", img_name)
# 随机旋转图像
angle = np.random.randint(-10, 10)
M = cv2.getRotationMatrix2D((cols/2, rows/2), angle, 1)
img_rotated = cv2.warpAffine(img, M, (cols, rows))
img_name = os.path.splitext(save_path)[0] + "_rotated.png"
cv2.imwrite(img_name, img_rotated)
print("Saved augmented image:", img_name)
# 添加高斯噪音
mean = 0
std = np.random.uniform(5, 15)
noise = np.zeros(img.shape, np.float32)
cv2.randn(noise, mean, std)
noise = np.uint8(noise)
img_noisy = cv2.add(img, noise)
img_name = os.path.splitext(save_path)[0] + "_noisy.png"
cv2.imwrite(img_name, img_noisy)
print("Saved augmented image:", img_name)
# 随机调整对比度和亮度
alpha = np.random.uniform(0.8, 1.2)
beta = np.random.randint(-10, 10)
img_contrast = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)
img_name = os.path.splitext(save_path)[0] + "_contrast.png"
cv2.imwrite(img_name, img_contrast)
print("Saved augmented image:", img_name)
return img
# 读取 data 文件夹中的所有图片,并进行数据增强
data_dir = "data"
save_dir = "result"
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 使用 glob 库来遍历 data 文件夹中所有图像
for img_path in glob.glob(os.path.join(data_dir, "*.png")):
img = cv2.imread(img_path)
# 获取保存增强后的图片文件名
img_name = os.path.basename(img_path)
save_path = os.path.join(save_dir, img_name)
# 数据增强
augment_data(img)
# 保存原始图片
cv2.imwrite(save_path, img)
print("Saved original image:", save_path)
YOLO图像前处理及格式转换
Richard Yue2024-03-30 21:28
相关推荐
默_笙5 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的AI的探索之旅5 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升qq_426003965 天前
启动playwright录制codegen生成自动化测试脚本虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺长沙三为智能科技5 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__只睡四小时5 天前
Canvas 弹道联机实战:700 行 + 固定时间步长C语言小火车5 天前
C/C++ 为什么需要编译器?奇思妙想聪明勤奋的小羊5 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派