多任务学习目标检测和语义分割,数据处理汇总

该博客详细介绍了如何对图像进行多种处理,包括水平翻转、加雾效果、椒盐噪声和高斯噪声的添加,以及resize并边缘填充后的标签处理。同时提供了相应的Python代码实现,适用于目标检测和语义分割任务的数据增强。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原始图像,目标检测的标签框和语义分割的标签水平翻转处理: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
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值