Python:基于深度学习的图像分割后修改图片颜色(以VOC2012数据集为例)

本文主要是介绍Python:基于深度学习的图像分割后修改图片颜色(以VOC2012数据集为例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用深度学习算法对图像进行分割任务后,得到的分割图像中的物体往往是各种不同深浅的灰色,不容易看清楚各物体的界限。以VOC2012为例,可以使用以下程序对分割后输出的图像批量修改颜色。

import os
from PIL import Image
import time
from tqdm import tqdm# 源目录
MyPath = 'D:\code\ChangeColor\sem_seg/'
# 输出目录
OutPath = 'D:\code\ChangeColor\sem_seg_out/'def processImage(filesoure, destsoure, name, imgtype):'''filesoure是存放待转换图片的目录destsoure是存在输出转换后图片的目录name是文件名imgtype是文件类型'''imgtype = 'bmp' if imgtype == '.bmp' else 'png'# 打开图片im = Image.open(filesoure + name)img = im.convert("RGBA")pixdata = img.load()# 二值化for y in range(img.size[1]):for x in range(img.size[0]):if pixdata[x, y][0] ==1:pixdata[x, y] = (128,0,0, 255)if pixdata[x, y][0] ==2:pixdata[x, y] = (0,128,0, 255)if pixdata[x, y][0] ==3:pixdata[x, y] = (128,128,0, 255)if pixdata[x, y][0] ==4:pixdata[x, y] = (0, 0, 128, 255)if pixdata[x, y][0] ==5:pixdata[x, y] = (128,0,128, 255)if pixdata[x, y][0] ==6:pixdata[x, y] = (0,128,128, 255)if pixdata[x, y][0] ==7:pixdata[x, y] = (128,128,128, 255)if pixdata[x, y][0] ==8:pixdata[x, y] = (64,0,0, 255)if pixdata[x, y][0] ==9:pixdata[x, y] = (192,0,0, 255)if pixdata[x, y][0] ==10:pixdata[x, y] = (64,128,0, 255)if pixdata[x, y][0] ==11:pixdata[x, y] = (192,128,0, 255)if pixdata[x, y][0] ==12:pixdata[x, y] = (64,0,128, 255)if pixdata[x, y][0] ==13:pixdata[x, y] = (192,0,128, 255)if pixdata[x, y][0] ==14:pixdata[x, y] = (64,128,128, 255)if pixdata[x, y][0] ==15:pixdata[x, y] = (192,128,128, 255)if pixdata[x, y][0] ==16:pixdata[x, y] = (0,64,0, 255)if pixdata[x, y][0] ==17:pixdata[x, y] = (128,64,0, 255)if pixdata[x, y][0] ==18:pixdata[x, y] = (0,192,0, 255)if pixdata[x, y][0] ==19:pixdata[x, y] = (128,192,0, 255)if pixdata[x, y][0] ==20:pixdata[x, y] = (0,64,128, 255)# for y in range(img.size[1]):#     for x in range(img.size[0]):#         if pixdata[x, y][1] !=0:#             pixdata[x, y] = (255, 255, 255, 255)## for y in range(img.size[1]):#     for x in range(img.size[0]):#         if pixdata[x, y][2] != 0:#             pixdata[x, y] = (255, 255, 255, 255)img.save(destsoure + name, imgtype)def run():# 切换到源目录,遍历源目录下所有图片os.chdir(MyPath)for i in tqdm(os.listdir(os.getcwd())):# 检查后缀postfix = os.path.splitext(i)[1]if postfix == '.bmp' or postfix == '.png':processImage(MyPath, OutPath, i, postfix)time.sleep(0.01)if __name__ == '__main__':run()

修改后的分割图像如图所示:
在这里插入图片描述

这篇关于Python:基于深度学习的图像分割后修改图片颜色(以VOC2012数据集为例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/262033

相关文章

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、