[labelme]labelme如何将标注的json格式转成png的mask文件掩码文件

labelme工具不仅仅具有标注功能,而且可以将json文件转化为png的分割训练文件,如果您是一个类别则可以直接用labelme_json_to_dataset进行转换最后提取对应的掩码文件即可进行语义分割训练。如果您是>=2个类别则不推荐使用labelme工具进行转换,官方已经提示使用labelme_json_to_dataset进行超过2个类别转换可能会导致颜色映射错误,从而导致转换Png混乱,进一步导致训练的模型识别能力很差或者根本不能识别。官方的labelme_json_todatase工具转换要求json绝对路径不能包含中文路径或者空格,否则需要更改代码才能正常转换。这里不做讲解怎么改代码,下面我们将带大家怎么转换。转换前需要注意几点:

第一:必须切换到labelme对应安装环境中,否则无法使用labelme_json_to_dataset工具

第二:json绝对路径不能包含中文路径或者空格,否则无法转换

第三:官方的labelme_json_to_dataset只能转换单个json文件不支持文件夹批量转换,如果想批量转换需要更改代码或者写个bat脚本进行批量转换

第四:转换的Json文件中包含图片base64编码信息或者json和图片要在一起放着。如果只有一个对应json文件,没有对应图片且同时json里面没有存储base64的图片信息也会导致无法转换。

好了下面开始操作: 

第一步,打开我们对应的labelme环境,比如我的labelme是安装在anaconda3的base环境中,我们在任务栏搜索anconda打开prompt

打开后进入prompt环境

可以看到cmd上面右侧多了个base,表示我们正在anaconda3的base环境中,如果您是在其他虚拟环境中,比如py38环境,则可以通过输入conda activate py38进行切换到指定环境

您可以看到右侧环境名字由base变成py38,如果您是其他名称虚拟环境可以依此类推操作

之后我们切换到json所在目录

比如我在桌面路径有个文件夹里面放的是标注文件C:\Users\Administrator\Desktop\labelme-dogcat-test

则可以输入

cd /d C:\Users\Administrator\Desktop\labelme-dogcat-test进行切换,注意/d是必须存在的,否则无法切换目录

随后我们开始转换,输入labelme_json_to_dataset json文件名即可转换

之后我们进去json所在文件夹查看转换结果

可以看到已经转换完成。如果想批量转换则需要自己写代码或者脚本进行转换。 这里我提供一个脚本

import os
import sys
import subprocess'''
本脚本可以批量将labelme标注的json文件转成模型训练的掩码文件
'''def convert_file(json_file):p = subprocess.Popen(["labelme_json_to_dataset", json_file], shell=False, stdout=subprocess.PIPE)p.communicate()def convert_dir(dir):count = 0for file in os.listdir(dir):if not file.endswith(".json"):continuejson_file = os.path.join(dir, file)convert_file(json_file)count += 1print("convert over, {} file(s) converted!".format(count))if __name__ == '__main__':arg = sys.argvif len(arg) == 2:convert_dir(arg[1])else:print(r"command error,you should input command like:python json_convert.py D:\json")

将其保存为json_convert.py,然后切换到这个脚本路径,执行

python  json_convert.py 文件夹路径比如我的json文件都放在桌面文件夹C:\Users\Administrator\Desktop\labelme-dogcat-test

则输入

python  json_convert.py C:\Users\Administrator\Desktop\labelme-dogcat-test

如果您觉得上面文章太长看的头疼,请观看视频演示教程:

如何使用labelme自带工具进行掩码文件转化以及注意事项_哔哩哔哩_bilibili教你如何使用labelme自带的labelme_json_to_dataset进行掩码文件转化以及注意事项, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:yolov8自动标注工具使用教程可更换自己模型标注,yolov8 TensorRT C++ C#部署,用C#部署yolov8的tensorrt模型进行目标检测winform最快检测速度,基于yolov8官方目标追踪botsort和bytetrack源码开发视频演示,[数据集][目标检测][重制版]人员持刀数据集VOC+YOLO格式6923张1类别,C# winform使用纯opencvsharp部署yolox-onnx模型,使用纯opencv部署yolov8目标检测模型onnx,YOLOv8检测界面-PyQt5实现,yolov3 yolov4 yolov7训练助手2.1支持yolov7一键训练全程不用写代码傻瓜式操作,C#实现全网yolov7目前最快winform目标检测icon-default.png?t=N7T8https://www.bilibili.com/video/BV1ne41117pp/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413216.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Liunx:线程控制

目录 创建线程:pthread_create(); 线程等待:pthread_join(); 线程退出:pthread_exit(); 线程取消:pthread_cancel() 说线程的时候说过,liunx没有选择单独定义线程的数据结构和适配算法,而是用轻量级进程…

软件测试|深入了解Python中的super()函数用法

简介 Python中的super()函数是一种强大的工具,用于在子类中调用父类的方法。它在面向对象编程中非常有用,可以让你轻松地扩展和重用现有的类。本文将详细介绍super()函数的用法,并提供一些示例来帮助你更好地理解它的功能。 什么是super()函…

el-date-picker如果超过限制跨度则提示

需求:实现日期时间选择组件跨度如果超过限制天数,点击查询则提示超过限制时间 封装一个方法,传入开始和结束时间以及限制天数,如果超过则返回false //计算时间跨度是否超过限制天数isTimeSpanWithinLimit(startTime, endTime, li…

Firefox 100 正式发布

五月三日,Firefox发布了它的第100个版本,来回顾一下Firefox是如何走到今天这一步的,以及在第100个版本中发布了哪些功能。 回顾 2004年,《纽约时报》上宣布了Firefox 1.0的发布,这个广告列出了为第一版做出贡献的每一…

Seaborn可视化的各种图及代码演示

一.简介 Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。 Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做…

Modbus协议学习第三篇之协议通信规则

导语 本篇博客将深入介绍Modbus协议的一些内容,主要包括通讯方式和通讯模型的介绍 Modbus通讯方式 Modbus协议是单主机、多从机的通信协议,即同一时间,总线上只能有一个主设备,但可以有一个或者多个从设备(最多好像是2…

SpringMVC下半篇之异常处理器及日期转换器

3.异常处理器 如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。 3.1.异常处理思路 系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由…

图像处理中,采用极线约束准则来约束特征点匹配搜索空间,理论上在极线上进行搜索。这里的极线是什么线,怎么定义的?基本矩阵F和本质矩阵E有什么区别?

问题描述:图像处理中,采用极线约束准则来约束特征点匹配搜索空间,理论上在极线上进行搜索。这里的极线是什么线,怎么定义的?基本矩阵F和本质矩阵E有什么区别? 问题1解答: 极线是通过极线几何学…

银行家算法

文章目录 主要内容一.银行家算法1.需求分析 2.概要设计3.源代码代码如下(示例): 总结 主要内容 一.银行家算法 1.需求分析 通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生条件,采用适当的算法,有效…

Discuz论坛网站登录账号操作慢,必须强制刷新才会显示登录怎么办?

飞飞发现在登录服务器大本营账号时,输入账号密码登录后还是显示的登录框,强制刷新后才知道已经登录了,每次都要刷新才能正常显示,非常影响用户体验,于是在网上找了类似的问题故障解决方法,目前问题已经解决…

移动端开发进阶之蓝牙通讯(四)

移动端开发进阶之蓝牙通讯(四) 在移动端开发实践中,可能会要求在不同的设备之间切换,从而提升用户体验; 或者为了提升设备的利用率,实现设备之间的连接和协同工作; 不得不通过多端连接,将多个设备连接在一起,实现设备之间的数据共享、远程控制等功能,根据具体的应用…

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(6)解散部门

指路(1)(2)(3)(4)(5)👇 黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(1)准备工作、部门管理_tlias智能…