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

YOLO图像前处理及格式转换

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 = 0std = 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)

XML格式数据集转TXT(YOLO)_xml转txt-CSDN博客

http://www.lryc.cn/news/328484.html

相关文章:

  • ES6 学习(二)-- 字符串/数组/对象/函数扩展
  • 《VMamba》论文笔记
  • 手机真机连接USB调试adb不识别不显示和TCPIP连接问题
  • MySQL分表后,如何做分页查询?
  • 【Deep Learning 11】Graph Neural Network
  • http和https的工作原理是什么?
  • STL中容器、算法、迭代器
  • 深入并广泛了解Redis常见的缓存使用问题
  • nginx界面管理工具之nginxWebUI 搭建与使用
  • linux下 罗技鼠标睡眠唤醒问题的解决
  • 架构师之路--Docker的技术学习路径
  • 【动手学深度学习-pytorch】 9.4 双向循环神经网络
  • 网际协议 - IP
  • DC-9靶场
  • 自定义类型(二)结构体位段,联合体,枚举
  • MySQL5.7源码分析--解析
  • windows10搭建reactnative,运行android全过程
  • 小迪学习笔记(内网安全)(常见概念和信息收集)
  • Python自动连接SSH
  • 机器学习实验------AGNES层次聚类方法
  • HBase常用的Filter过滤器操作
  • 容器安全与防御(德迅蜂巢)
  • 【面经八股】搜广推方向:面试记录(十一)
  • 第十四章 MySQL
  • C++项目——集群聊天服务器项目(七)Model层设计、注册业务实现
  • VBA语言専攻介绍(20240331更新)
  • Golang- 邮件服务,发送邮件
  • C语言:编译和链接
  • JavaEE 初阶篇-深入了解多线程安全问题(出现线程不安全的原因与解决线程不安全的方法)
  • 计算机网络⑦ —— 网络层协议