提示:本文章是对前人的总结补充,代码略有修改。原文链接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 ,类别信息
现在生成一个是没问题了,接下来就是批量生成了批量生成,批量生成我们需要在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\" #字符串,内容根据下面的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格式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)