栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

不修改.py批量转换labelme标注的json格式标签转mask.png格式

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

不修改.py批量转换labelme标注的json格式标签转mask.png格式

提示:本文章是对前人的总结补充,代码略有修改。原文链接https://zhuanlan.zhihu.com/p/116023772

文章目录
  • 一、安装labelme
  • 二、单文件json格式标签为png格式
  • 三、批量json格式标签为png格式
  • 四、将文件批量转移成标准格式
  • 后记
  • 参考:


一、安装labelme

安装3.16.7版本的labelme
python = 3.7

> # 使用pip安装labelme
> pip install labelme==3.16.7
二、单文件json格式标签为png格式

安装好labelme之后,直接在 文件名.json目录下输入cmd终端输入:
ps:记得先激活python环境 activate xxx

labelme_json_to_dataset 文件名.json

即可得到一个文件夹,有五个文件,

  • img.png,源文件图像
  • label.png,标签图像
  • label_names.txt,标签中的各个类别的名称
  • label_viz.png,源文件与标签融合文件
  • info.yaml ,类别信息

三、批量json格式标签为png格式

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

'''
*********************   用os批量转json为mask.png  ***************************
'''

# 此处只修改文件路径即可

import os

json_folder = r"E:DATAjson_f1"   # json文件所在目录
#  获取文件夹内的文件名
FileNameList = os.listdir(json_folder)
#  激活labelme环境
os.system("activate labelme")
for z in range(len(FileNameList)):
    #  判断当前文件是否为json文件
    if(os.path.splitext(FileNameList[z])[1] == ".json"):
        json_file = json_folder + "\" + FileNameList[z]
        #  将该json文件转为png
        os.system("labelme_json_to_dataset " + json_file)
        


PS:此处批量转换后的文件在原json文件目录,需要 剪切粘贴 到咱们自定义的目录

四、将文件批量转移成标准格式

这里的标准格式是指所有原图像一个文件夹,所有label一个文件夹

# coding=gbk

'''
*********************   批量转换出来的mask.png文件分别分类的样本、标签文件夹  ***************************
'''

#目的:将img放一个文件夹、label放一个文件夹、等等

#q是一个字符串,根据JPG_folder对照着修改
#建立每个目标文件路径 JPG_folder(路径格式为:01下一层的 每个目标文件夹(数量取决于你的样本数),每个文件夹内包含img、label、label_viz、info.yaml、label_names.txt五个文件)
#img图像文件夹、label图像文件夹、其他文件夹(自定义)需要自己创建

import os
import shutil

q = "E:\DATA\json_f2\01\" #字符串,内容根据下面的JPG_folder对应修改
# 需要建立或修改的文件夹路径
JPG_folder = r"E:DATAjson_f11"  #os批量转json为mask.png后的目录
Paste_JPG_folder = r"E:DATAjson_f12jpg2"   # 后面要导出的img目录
Paste_label_folder = r"E:DATAjson_f12label2"   # 后面要导出的label目录
Paste_label_viz_folder = r"E:DATAjson_f12label2_viz"  # 后面要导出的label_viz目录


#  获取文件夹内的文件名
FileNameList = os.listdir(JPG_folder)

# for循环单独打开每个文件夹
for i in range(len(FileNameList)):
    filepath = q + FileNameList[i]
    filepath = JPG_folder +'\'+ FileNameList[i]
    # print(filepath)
#获取每个文件夹的文件名列表
    filelist = os.listdir(filepath)
    # print(filelist)
#寻找目标文件
    for j in range(len(filelist)):
        # 判断文件名是否是img
        if (os.path.splitext(filelist[j])[0] == "img"):
            #  复制img文件
            JPG_file = filepath + "\" + filelist[j]
            new_JPG_file = Paste_JPG_folder + "\" + str(i) + ".JPG"
            # print(JPG_file,new_JPG_file)
            shutil.copyfile(JPG_file, new_JPG_file)
        elif (os.path.splitext(filelist[j])[0] == "label"):
            #复制label文件
            label_file = filepath + "\" + filelist[j]
            new_label_file = Paste_label_folder + "\" + str(i) + ".png"
            shutil.copyfile(label_file, new_label_file)

        elif (os.path.splitext(filelist[j])[0] == "label_viz"):
             #复制label文件
            label_viz_file = filepath + "\" + filelist[j]
            new_label_viz_file = Paste_label_viz_folder + "\" + str(i) + ".png"
            shutil.copyfile(label_viz_file, new_label_viz_file)




后记

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

参考:

深度学习数据预处理_python批量转换labelme标注的json格式标签为png格式

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/618986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号