python 读png的值变了_深度学习数据预处理_python批量转换labelme标注的json格式标签为png格式...

前言

之前做深度学习语义分割的时候,处理的数据集的标签label都是图片格式的。这次遇到了json格式的标签,查了一下应该是lebelme制作的,然后找到了解决方案并写下了这篇文字。

安装labelme

需要安装labelme,直接pip安装即可。我的python环境为3.7,安装之后使用labelme报错,直觉告诉我可能是python版本问题,然后创建了python3.6的虚拟环境,果然OK。步骤如下:

# 创建一个python3.6的虚拟环境

conda create --name=labelme python=3.6

# 激活该环境

activate labelme

# 使用pip安装labelme

pip install labelme

单文件json格式标签为png格式

安装好labelme之后,直接在cmd终端输入:

labelme_json_to_dataset 文件名.json

即可得到一个文件夹,有四个文件,img.png,源文件图像

label.png,标签图像

label_names.txt,标签中的各个类别的名称

label_viz.png,源文件与标签融合文件

其中的label.png即是我们要的想要的标签文件。如果本来的源文件图像为jpg格式,我们会发现生成的png格式源文件图像大小会大很多,不必惊慌。JPG转PNG质量不会有变化,但大小通常会增加几倍左右,这是因为JPG是有损压缩,而PNG是无损压缩。img.pnglabel.pnglabel_viz.pnglabel_names.txt

批量json格式标签为png格式

现在生成一个是没问题了,接下来就是批量生成了批量生成,批量生成我们需要在python里调用cmd,os模块调用CMD命令有两种方式:os.popen(),os.system() 都是用当前进程来调用。os.system是无法获取返回值的,当运行结束后接着往下面执行程序。

import os

json_folder = r"D:\RSimage"

# 获取文件夹内的文件名

FileNameList = os.listdir(json_folder)

# 激活labelme环境

os.system("activate labelme")

for i in range(len(FileNameList)):

# 判断当前文件是否为json文件

if(os.path.splitext(FileNameList[i])[1] == ".json"):

json_file = json_folder + "\\" + FileNameList[i]

# 将该json文件转为png

os.system("labelme_json_to_dataset " + json_file)

将文件批量转移成标准格式(这里的标准格式是指所有原图像一个文件夹,所有label一个文件夹)

import os

import shutil

JPG_folder = r"D:\MyFile\6JingJie\05DeepLearning\Demo\data\RSimage\2019"

Paste_JPG_folder = r"D:\MyFile\6JingJie\05DeepLearning\Demo\data\RSimage\image"

Paste_label_folder = r"D:\MyFile\6JingJie\05DeepLearning\Demo\data\RSimage\label"

# 获取文件夹内的文件名

FileNameList = os.listdir(JPG_folder)

NewFileName = 1

for i in range(len(FileNameList)):

# 判断当前文件是否为json文件

if(os.path.splitext(FileNameList[i])[1] == ".JPG"):

# 复制jpg文件

JPG_file = JPG_folder + "\\" + FileNameList[i]

new_JPG_file = Paste_JPG_folder + "\\" + str(NewFileName) + ".JPG"

shutil.copyfile(JPG_file, new_JPG_file)

# 复制label文件

jpg_file_name = FileNameList[i].split(".", 1)[0]

label_file = JPG_folder + "\\" + jpg_file_name + "_json\\label.png"

new_label_file = Paste_label_folder + "\\" + str(NewFileName) + ".png"

shutil.copyfile(label_file, new_label_file)

# 文件序列名+1

NewFileName = NewFileName + 1最终形态

后记

大家有什么问题留言即可,共同讨论,共同进步。

参考:CSDN-专业IT技术社区-登录​blog.csdn.nethttps://github.com/wkentaro/labelme​github.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值