1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python 读png的值变了_深度学习数据预处理_python批量转换labelme标注的json格式标签为png格式...

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

时间:2019-10-17 21:29:19

相关推荐

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\"

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技术社区-登录​/wkentaro/labelme​

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。