原始图像,目标检测的标签框和语义分割的标签水平翻转处理:https://blog.csdn.net/hejunran/article/details/117483650
原始图像加雾化,目标检测的标签框和语义分割的标签重命名处理:https://blog.csdn.net/hejunran/article/details/117513626
原始图像加椒盐噪声和高斯噪声,目标检测的标签框和语义分割的标签重命名处理:
https://blog.csdn.net/hejunran/article/details/117534930
原始图像resize,边缘填充成原始图像大小,目标检测的标签框xml也resize,和语义分割的标签resize重命名处理:https://blog.csdn.net/hejunran/article/details/117566416
import numpy as np
import cv2
import math
import random
import os
import xml.etree.ElementTree as ET
from PIL import Image
from matplotlib import pyplot as plt
name_classes = ['hqc'] # 类别名,可以更改为对应的voc类别名称即可
"图像水平翻转处理"
def flip_horizontal(jpg_file,new_jpg,png_file,new_png):
img = Image.open(jpg_file)
png =Image.open(png_file)
out_img = img.transpose(Image.FLIP_LEFT_RIGHT)
out_png = png.transpose(Image.FLIP_LEFT_RIGHT)
out_img.save(new_jpg)
out_png.save(new_png)
def flip_xml(xml_file,new_xml):
tree = ET.parse(xml_file)
objs = tree.findall('object')
for ix, obj in enumerate(objs):
name = obj.find('name').text
if name == 'hqc':
print(xml_file)
obj_new = obj.find('bndbox')
xmin = str( 256 - int(obj_new.find('xmax').text)) # 因为进行水平翻转,这只改变x坐标值,y坐标值不变
xmax = str( 256 - int(obj_new.find('xmin').text))
obj_new.find('xmin').text = xmin
obj_new.find('xmax').text = xmax
tree.write(new_xml)
"图像加雾化处理"
def AddHaze1(img):
# img_f = img
img_f = img / 255.0
(row, col, chs) = img.shape
A = 0.6 # 亮度
beta = 0.08 # 雾的浓度
size = math.sqrt(max(row, col)) # 雾化尺寸
center = (row // 2, col // 2) # 雾化中心
for j in range(row):
for l in range(col):
d = -0.04 * math.sqrt((j - center[0]) ** 2 + (l - center[1]) ** 2) + size
td = math.exp(-beta * d)
img_f[j][l][:] = img_f[j][l][:] * td + A * (1 - td)
img_f = np.uint8(img_f * 255)
return img_f
def AddHaze2(img):
img_h =img/255.0
# img_h = img