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()

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

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值