热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据增强亮度对比度色彩饱和度色调锐度不改变图像大小增加ssd目标框xml文件的同步处理方法。

1,详细信息https:github.comjack16888imgaugcolor_brightness.py要联合其他脚本使用。2,该github

1,详细信息 https://github.com/jack16888/imgaug   color_brightness.py 要联合其他脚本使用。

2,该github中还有另外一种图像增强方法,请看github介绍imgaug。

# coding=utf-8
import os
import os
import cv2
import math
import numpy as np
import shutil
from PIL import Image
from PIL import ImageEnhance

"""
1、对比度:白色画面(最亮时)下的亮度除以黑色画面(最暗时)下的亮度;
2、色彩饱和度::彩度除以明度,指色彩的鲜艳程度,也称色彩的纯度;
3、色调:向负方向调节会显现红色,正方向调节则增加黄色。适合对肤色对象进行微调;
4、锐度:是反映图像平面清晰度和图像边缘锐利程度的一个指标。
"""


def compute(img):
    per_image_Rmean = []
    per_image_Gmean = []
    per_image_Bmean = []
    per_image_Bmean.append(np.mean(img[:, :, 0]))
    per_image_Gmean.append(np.mean(img[:, :, 1]))
    per_image_Rmean.append(np.mean(img[:, :, 2]))
    R_mean = np.mean(per_image_Rmean)
    G_mean = np.mean(per_image_Gmean)
    B_mean = np.mean(per_image_Bmean)
    return math.sqrt(0.241 * (R_mean ** 2) + 0.691 * (G_mean ** 2) + 0.068 * (B_mean ** 2))


def fun_color(image, coefficient, path_save):
    # 色度,增强因子为1.0是原始图像
    # 色度增强 1.5
    # 色度减弱 0.8
    enh_col = ImageEnhance.Color(image)
    image_colored1 = enh_col.enhance(coefficient)
    image_colored1.save(path_save)


def fun_Contrast(image, coefficient, path_save):
    # 对比度,增强因子为1.0是原始图片
    # 对比度增强 1.5
    # 对比度减弱 0.8
    enh_con = ImageEnhance.Contrast(image)
    image_contrasted1 = enh_con.enhance(coefficient)
    image_contrasted1.save(path_save)

def fun_Sharpness(image, coefficient, path_save):
    # 锐度,增强因子为1.0是原始图片
    # 锐度增强 3
    # 锐度减弱 0.8
    enh_sha = ImageEnhance.Sharpness(image)
    image_sharped1 = enh_sha.enhance(coefficient)
    image_sharped1.save(path_save)

def fun_bright(image, coefficient, path_save):
    # 变亮 1.5
    # 变暗 0.8
    # 亮度增强,增强因子为0.0将产生黑色图像; 为1.0将保持原始图像。
    enh_bri = ImageEnhance.Brightness(image)
    image_brightened1 = enh_bri.enhance(coefficient)
    image_brightened1.save(path_save)

def show_all():
    file_root = "/home/zhangwanchun/data/VOCdevkit/VOC2007_aug/JPEGImages/"
    xml_root = "/home/zhangwanchun/data/VOCdevkit/VOC2007_aug/Annotations/"
    save_root = "/home/zhangwanchun/data/VOCdevkit/VOC2007_aug/save/"
    xml_save = "/home/zhangwanchun/data/VOCdevkit/VOC2007_aug/xml/"
    list_file = os.listdir(file_root)
    cnt = 0
    for img_name in list_file:
        cnt += 1
        print("cnt=%d,img_name=%s" % (cnt, img_name))
        path = file_root + img_name
        name = img_name.replace(".jpg", "")
        image = Image.open(path)
        list_coe = [0.5,1,3]
        for val in list_coe:
            path_save_bright = save_root + name + "_bri_" + str(val) + ".jpg"
            fun_bright(image, val, path_save_bright)

            path_save_color = save_root + name + "_color_" + str(val) + ".jpg"
            fun_color(image, val, path_save_color)

            path_save_contra = save_root + name + "_contra_" + str(val) + ".jpg"
            fun_Contrast(image, val, path_save_contra)

            path_save_sharp = save_root + name + "_sharp_" + str(val) + ".jpg"
            fun_Sharpness(image, val, path_save_sharp)


def my_aug():
    file_root = "/home/zhangwanchun/data/VOCdevkit/VOC2007_aug/JPEGImages/"
    save_root = "/home/zhangwanchun/data/VOCdevkit/VOC2007_aug/save/"
    xml_save = "/home/zhangwanchun/data/VOCdevkit/VOC2007_aug/xml/"
    xml_root = "/home/zhangwanchun/data/VOCdevkit/VOC2007_aug/Annotations/"
    list_file = os.listdir(file_root)
    cnt = 0
    for img_name in list_file:
        cnt += 1
        print("cnt=%d,img_name=%s" % (cnt, img_name))
        path = file_root + img_name
        name = img_name.replace(".jpg", "")
        image = Image.open(path)
        img = cv2.imread(path)
        mean_1 = compute(img)
        cof = 0.0
        if mean_1 <40:
            cof &#61; 3.5
        elif mean_1 <60:
            cof &#61; 3
        elif mean_1 <80:
            cof &#61; 2
        elif mean_1 <90:
            cof &#61; 1.5
        elif mean_1 <110:
            cof &#61; 1.1
        elif mean_1 > 130:
             cof &#61; 0.5
        else:
             cof &#61; 0.75

        cof_contrast &#61; 0.0
        if cof>1:
            cof_contrast &#61; 1.5
        else:
            cof_contrast &#61; 0.8
        xmlpath &#61; xml_root &#43; name &#43; &#39;.xml&#39;
        
        path_save_bright &#61; save_root &#43; name &#43; "_bri_" &#43; str(cof) &#43; &#39;.jpg&#39;
        path_save_bright_xml &#61; xml_save &#43; name &#43; "_bri_" &#43; str(cof) &#43; &#39;.jpg&#39;
        shutil.copy(xmlpath,path_save_bright_xml.replace(".jpg", ".xml"))
        fun_bright(image, cof, path_save_bright)

        path_save_sharp &#61; save_root &#43; name &#43; "_sharp_" &#43; str(2) &#43; &#39;.jpg&#39;
        path_save_sharp_xml &#61; xml_save &#43; name &#43; "_sharp_" &#43; str(2) &#43; &#39;.jpg&#39;
        shutil.copy(xmlpath, path_save_sharp_xml.replace(".jpg", ".xml"))
        fun_Sharpness(image, 2, path_save_sharp)

        path_save_contra &#61; save_root &#43; name &#43; "_contra_" &#43; str(cof_contrast) &#43; ".jpg"
        path_save_contra_xml &#61; xml_save &#43; name &#43; "_contra_" &#43; str(cof_contrast) &#43; ".jpg"
        shutil.copy(xmlpath, path_save_contra_xml.replace(".jpg", ".xml"))
        fun_Contrast(image, cof_contrast, path_save_contra)

        path_save_color &#61; save_root &#43; name &#43; "_color_" &#43; str(1.5) &#43; ".jpg"
        path_save_color_xml &#61; xml_save &#43; name &#43; "_color_" &#43; str(1.5) &#43; ".jpg"
        shutil.copy(xmlpath,path_save_color_xml.replace(".jpg", ".xml"))
        fun_color(image, 1.5, path_save_color)


if __name__ &#61;&#61; "__main__":

    #show_all()
    my_aug()


推荐阅读
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
author-avatar
给糖就不骗你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有