目录

方案A

方案B

方案C 每张图片旋转45度,然后标注


方案A

图片和标签统一命名

需要提前建好文件夹

# -*- coding:utf-8 -*-
import sys
# sys.path.append('E:\\Anaconda\\libs')
import os  # os:操作系统相关的信息模块
import shutil
from os.path import join
import cv2
import numpy as np
import random  # 导入随机函数os.environ["CUDA_VISIBLE_DEVICES"] = "0"
# 存放原始图片地址
data_base_dir = r'E:\VINS\train'
file_dir = r'E:\VINS\train'
dest_dir1 = r"E:\VINS\train01"
dest_dir2 = r"E:\VINS\train02"
dest_dir3 = r"E:\VINS\train03"
dest_dir4 = r"E:\VINS\train04"
dest_dir5 = r"E:\VINS\train05"
dest_dir6 = r"E:\VINS\train06"
dest_dir7 = r"E:\VINS\train07"
dest_dir8 = r"E:\VINS\train08"
dest_dir9 = r"E:\VINS\train09"
dest_dir10 = r"E:\VINS\train10"
dest_dir11 = r"E:\VINS\train11"
dest_dir12 = r"E:\VINS\train12"file_list = []  # 建立列表,用于保存图片信息
# 读取图片文件,并将图片地址、图片名和标签写到txt文件中def imgBrightness(img1, c, b):rows, cols, channels = img1.shapeblank = np.zeros([rows, cols, channels], img1.dtype)rst = cv2.addWeighted(img1, c, blank, 1-c, b)return rstdef noise(img,snr):h=img.shape[0]w=img.shape[1]img1=img.copy()sp=h*w   # 计算图像像素点个数NP=int(sp*(1-snr))   # 计算图像椒盐噪声点个数for i in range (NP):randx=np.random.randint(1,h-1)   # 生成一个 1 至 h-1 之间的随机整数randy=np.random.randint(1,w-1)   # 生成一个 1 至 w-1 之间的随机整数if np.random.random()<=0.5:   # np.random.random()生成一个 0 至 1 之间的浮点数img1[randx,randy]=0else:img1[randx,randy]=255return img1for file in os.listdir(data_base_dir):  # file为current_dir当前目录下图片名if file.endswith(".jpg"):  # 如果file以jpg结尾for item in range(13):# print(file)imageName = "VIN" + str(item) + file[:-4] + '.jpg'if item == 0:# 原图不复制了scr_dir = join(file_dir, file)# shutil.copyfile(scr_dir, det)# 增强图片if item == 1:img = cv2.imread(scr_dir, cv2.IMREAD_GRAYSCALE)gaussianBlur = cv2.GaussianBlur(img, (3,3),3)blur = cv2.blur(gaussianBlur, (5, 5))# cv2.imshow("img1", blur)# cv2.waitKey()det = join(dest_dir1, imageName)cv2.imwrite(det, blur)if item == 2:img = cv2.imread(scr_dir)boxblur = cv2.boxFilter(img, -1, (9,9))# cv2.imshow("img2", boxblur)# cv2.waitKey()det = join(dest_dir2, imageName)cv2.imwrite(det, boxblur)# 加椒盐噪声小if item == 3:img = cv2.imread(scr_dir, cv2.IMREAD_GRAYSCALE)noiseimage = noise(img, 0.98)  # 将信噪比设定为0.6# cv2.imshow("img3", noiseimage)# cv2.waitKey()det = join(dest_dir3, imageName)cv2.imwrite(det, noiseimage)# 加椒盐噪声中if item == 4:img = cv2.imread(scr_dir)noiseimage4 = noise(img, 0.90)  # 将信噪比设定为0.6# cv2.imshow("img4", noiseimage4)# cv2.waitKey()det = join(dest_dir4, imageName)cv2.imwrite(det, noiseimage4)# 加椒盐噪声多if item == 5:img = cv2.imread(scr_dir, cv2.IMREAD_GRAYSCALE)noiseimage5 = noise(img, 0.86)  # 将信噪比设定为0.6# cv2.imshow("img5", noiseimage5)# cv2.waitKey()det = join(dest_dir5, imageName)cv2.imwrite(det, noiseimage5)# 加椒盐噪声加高斯模糊if item == 6:img = cv2.imread(scr_dir)noiseimage = noise(img, 0.98)  # 将信噪比设定为0.6gaussianBlur6 = cv2.GaussianBlur(noiseimage, (3, 3), 3)# cv2.imshow("img3", gaussianBlur6)# cv2.waitKey()det = join(dest_dir6, imageName)cv2.imwrite(det, gaussianBlur6)# 加椒盐噪声加高斯模糊if item == 7:img = cv2.imread(scr_dir, cv2.IMREAD_GRAYSCALE)noiseimage = noise(img, 0.98)  # 将信噪比设定为0.6boxblur7 = cv2.boxFilter(noiseimage, -1, (9,9))# cv2.imshow("img7", boxblur7)# cv2.waitKey()det = join(dest_dir7, imageName)cv2.imwrite(det, boxblur7)# 高斯模糊加椒盐噪声if item == 8:img = cv2.imread(scr_dir)gaussianBlur = cv2.GaussianBlur(img, (5,5),3)noiseimage8 = noise(gaussianBlur, 0.98)  # 将信噪比设定为0.6# cv2.imshow("img8", noiseimage8)# cv2.waitKey()det = join(dest_dir8, imageName)cv2.imwrite(det, noiseimage8)# 双边模糊加椒盐噪声if item == 9:img = cv2.imread(scr_dir, cv2.IMREAD_GRAYSCALE)bilBlur = cv2.bilateralFilter(img, 1, 25, 10)noiseimage9 = noise(bilBlur, 0.92)  # 将信噪比设定为0.6# cv2.imshow("img9", noiseimage9)# cv2.waitKey()det = join(dest_dir9, imageName)cv2.imwrite(det, noiseimage9)# 调亮if item == 10:img = cv2.imread(scr_dir)# 第二个参数调节亮度,越大越亮,越小越暗rst = imgBrightness(img, 1.6, 1)# cv2.imshow("img10", rst)# cv2.waitKey()det = join(dest_dir10, imageName)cv2.imwrite(det, rst)# 调亮并模糊if item == 11:img = cv2.imread(scr_dir)# 第二个参数调节亮度,越大越亮,越小越暗rst = imgBrightness(img, 1.4, 4)boxblur11 = cv2.boxFilter(rst, -1, (3,3))# cv2.imshow("img11", boxblur11)# cv2.waitKey()det = join(dest_dir11, imageName)cv2.imwrite(det, boxblur11)# 调亮加椒盐噪声if item == 12:img = cv2.imread(scr_dir)# 第二个参数调节亮度,越大越亮,越小越暗rst = imgBrightness(img, 1.28, 4)noiseimage12 = noise(rst, 0.92)  # 将信噪比设定为0.6# cv2.imshow("img12", noiseimage12)# cv2.waitKey()det = join(dest_dir12, imageName)cv2.imwrite(det, noiseimage12)
print("all down")

方案B

图片和标签一起变化

import cv2
import osif __name__ == "__main__":Labelsfilepath     = "DataSet/Labels/"Imagesfilepath = "DataSet/Images/"saveNewLabelsPath    = "DataSet/NewLabels/"saveNewImagesPath    = "DataSet/NewImages/"files = os.listdir(Labelsfilepath)for i, name in enumerate(files):txtFile = open(Labelsfilepath + name)   #读取文件名txtList = txtFile.readlines()img = cv2.imread(Imagesfilepath + name[0:-4] + ".jpg")Pheight, Pwidth, Pdepth = img.shapeimg1 = cv2.flip(img,1)                  #水平翻转cv2.imwrite(saveNewImagesPath + name[0:-4]+"_"+ "1" +".jpg", img1)lines_1 = []img2 = cv2.flip(img,0)                 #垂直翻转cv2.imwrite(saveNewImagesPath + name[0:-4]+"_"+ "2" +".jpg", img2)lines_2 = []img3 = cv2.flip(img,0)img3 = cv2.flip(img3,1)                 #对角翻转cv2.imwrite(saveNewImagesPath + name[0:-4]+"_"+ "3" +".jpg", img3)lines_3 = []for j in txtList:oneline = j.strip().split(" ")  #以空格分隔第一行label = oneline[0]        #标注类别cx = float(oneline[1])cy = float(oneline[2])w = float(oneline[3])h = float(oneline[4])new_cx = (Pwidth - cx*Pwidth -1)/Pwidthnew_cy = (Pheight- cy*Pheight -1)/Pheightline_1 = "%s %.6f %.6f %.6f %.6f\n" % (label, new_cx, cy, w, h)line_2 = "%s %.6f %.6f %.6f %.6f\n" % (label, cx, new_cy, w, h)line_3 = "%s %.6f %.6f %.6f %.6f\n" % (label, new_cx, new_cy, w, h)lines_1.append(line_1)lines_2.append(line_2)lines_3.append(line_3)txt_name_1 = saveNewLabelsPath + name[0:-4]+"_"+ "1" +".txt"txt_name_2 = saveNewLabelsPath + name[0:-4]+"_"+ "2" +".txt"txt_name_3 = saveNewLabelsPath + name[0:-4]+"_"+ "3" +".txt"with open(txt_name_1, "w") as f:f.writelines(lines_1)with open(txt_name_2, "w") as f:f.writelines(lines_2)with open(txt_name_3, "w") as f:f.writelines(lines_3)print("all finish")

方案C 每张图片旋转45度,然后标注

import cv2
import os
import numpy as npdef rotate(ps,m):pts = np.float32(ps).reshape([-1, 2])  # 要映射的点pts = np.hstack([pts, np.ones([len(pts), 1])]).Ttarget_point = np.dot(m, pts)target_point = [[target_point[0][x],target_point[1][x]] for x in range(len(target_point[0]))]return target_pointif __name__ == "__main__":Imagesfilepath = "DataSet/Images/"saveNewImagesPath  = "DataSet/NewImages/"files = os.listdir(Imagesfilepath)for i, name in enumerate(files):img = cv2.imread(Imagesfilepath + name[0:-4] + ".jpg")Pheight, Pwidth, Pdepth = img.shape#中心旋转45度for rot in range(1,8):angle = rot*45matRotate = cv2.getRotationMatrix2D((Pwidth*0.5, Pheight*0.5), angle, 1)dst_img = cv2.warpAffine(img, matRotate, (Pwidth,Pheight))cv2.imwrite(saveNewImagesPath + name[0:-4] + "_" + str(angle) +".jpg", dst_img)

最后标签相关的,可以通过labelimg查看是否正确。

深度学习样本标完后图片增强标签内容不变相关推荐

  1. 深度学习之数据处理——如何将图片和标签打乱并划分为训练集和测试集

    深度学习之数据处理--如何将图片和标签打乱并划分为训练集和测试集 记录我的第一篇CSDN博客 最近我在网上找到Office31数据集,这个数据集中包含了三个子数据集,分别为:Amazon.dslr.w ...

  2. 深度学习样本规则裁剪(图片规则裁剪)

    该代码是在处理DeepGlobe时所写,可灵活应用 deepglobe 数据训练图片和标签的大小都是1024×1024,而我们要处理成256×256:便可以使用下列代码. def clip():img ...

  3. 基于深度学习的目标检测:数据增强(一)图像翻转、图像旋转、图像放缩

    1.数据增强简介 数据增强(data augmentation),又名数据增广或数据扩充,其本质是通过使用图像处理方法,基于有限的数据产生更多的数据,以此增加训练样本的数量以及多样性,进而提升模型的泛 ...

  4. 基于矢量成果从影像提取中深度学习样本库

    大数据之:影像提取中深度学习样本库获取的思考 话说,虾神一直是做空间统计和数据分析的,对于深度学习这个热门学科,一直以来也就停留在"了解"阶段,虽然这个平展开来,里面比较核心的技术 ...

  5. 深度学习AI美颜系列---人脸数据增强

    深度学习AI美颜系列---人脸数据增强 在深度学习的训练中,我们经常会对较少的数据进行数据增强,一般而言,常用的数据增强包括如下几种: 1,旋转: 2,缩放: 3,镜像: 4,平移: 5,调色: 6, ...

  6. 视频教程-遥感影像深度学习样本制作-深度学习

    遥感影像深度学习样本制作 遥感专业硕士,拥有3年以上的遥感图像数据处理经验,对遥感.GIS等行业的应用有深刻的认识. 郑新杰 ¥20.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技 ...

  7. 机器学习与深度学习——通过奇异值分解算法压缩图片

    机器学习与深度学习--通过奇异值分解算法压缩图片 什么是奇异值分解? 奇异值分解(Singular Value Decomposition,SVD)是一种重要的线性代数方法,用于将一个矩阵分解成三个部 ...

  8. 遥感影像深度学习样本制作

    交流QQ:3239516597 对于遥感同学,在学习深度学习时,第一步就要解决遥感数据样本的制作,遥感影像数据的样本根据不同的应用也有所不同,不知道的同学可以去看视频:遥感深度学习样本制作视频1 今天 ...

  9. 1 图片channels_深度学习中各种图像库的图片读取方式

    深度学习中各种图像库的图片读取方式总结 在数据预处理过程中,经常需要写python代码搭建深度学习模型,不同的深度学习框架会有不同的读取数据方式(eg:Caffe的python接口默认BGR格式,Te ...

  10. (转)深度学习中各种图像库的图片读取方式

    https://blog.csdn.net/u013841196/article/details/81194310 深度学习中各种图像库的图片读取方式总结 在数据预处理过程中,经常需要写python代 ...

最新文章

  1. 使用vagrant基于官方的box制作自己的基础box
  2. 使用EasyRecovery 恢复被误删除的数据
  3. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_8_Throwable类中3个异常处理的方法...
  4. SpringMVC使用AOP
  5. 可编程交换时代就在这里
  6. js实现一键复制到剪切板上_js实现各种复制到剪贴板的方法
  7. 家用工具套装_居家生活必不可少的8款五金工具,便宜又实用
  8. python 之遍历目录树(可匹配输出特定后缀的文件)
  9. cookie和session理解
  10. 压缩或解压文件出现循环冗余检查的解决办法
  11. 《程序员修炼之道》读书笔记
  12. “AI安全”风起云涌,拿下A轮融资的瑞莱智慧如何与群雄共舞?
  13. 计算机机房一般在几楼,21层的楼房设备层一般在几楼
  14. Retrofit简单使用(小白都会了)
  15. 什么是smarty及其安装
  16. 实践练习四(必选):迁移 MySQL 数据到 OceanBase 集群
  17. linux u盘 命令,制作U盘版linux系统安装盘(DD命令)
  18. Qt Quick 简单教程
  19. Matlab 2016b 更新及语言设置为英文
  20. 叶圣陶:认真学习语文

热门文章

  1. 买的是ARM指令集授权,不是已设计好的CPU核?
  2. 摄像头实时帧率_【每日新闻】思特威全新发布130W像素全局快门图像传感器SC133GS;三星Galaxy Z Flip或仅配备12MP后置摄像头...
  3. 计算机桌面组成部分教案,三年级信息技术第五课设置个性桌面教学设计
  4. C# Excel 读写数据
  5. Abbirb120型工业机器人_你知道机器人有几种编程方式吗?
  6. des密钥java实现_java中以DES的方式实现对称加密并提供密钥的实例
  7. python的浮点数_Python的浮点数损失精度问题
  8. php转为json格式,如何将PHP数据转换为json格式?
  9. 巴西发生矿坝决堤事故 外媒:90名受困者已救出
  10. [MicroPython]F407控制DS3231读取时间、温度