当前位置: 首页 > news >正文

labelme标签批量转换数据集json_to_dataset

文章目录

  • labelme标签批量转换数据集json_to_dataset
    • 转换原理
    • 单张图片转换
    • 多张图片批量转换
      • bat脚本循环法
    • 标注图片提取
    • 标注图片转单通道

labelme标签批量转换数据集json_to_dataset

转自labelme批量制作数据集教程。

转换原理

在安装了labelme的虚拟环境中有一个labelme_json_to_dataset.exe文件可以将json文件转成png文件【分割掩码(mask)】,但这个过程一次只能转换一个文件,因此这里提出批量转换的方法。(labelme_json_to_dataset.exe文件的所在目录是conda\envs\labelme\Scripts\labelme_json_to_dataset.exe)。

单张图片转换

json文件需要转换成png文件【分割掩码(mask)】,基本转换方法是在安装了labelme的环境下,输入下面的代码:

labelme_json_to_dataset E:\test\image\001.json

在001.json所在文件夹内,会生成一个001_json的文件夹,里面有5个文件,其中的label.png为所要的分割掩膜,label_viz.png是通道融合图,新版本的labelme没有.yaml文件(因此新版本的labelme中仅会生成4个文件)。

分割掩膜示意图:
在这里插入图片描述

多张图片批量转换

但是当数据文件很多时,需要批量处理的方法。这种方法需要原始图片与对应的json文件在同一个文件夹下

bat脚本循环法

@echo off
for %%i in (*.json)  do labelme_json_to_dataset %%i
pause

新建一个txt文件,把这个复制进去,然后改名为test.bat,和要转换的文件放在一起。然后在激活相应环境下,进入所在文件目录,命令行输入test.bat就可以了

标注图片提取

生成的label图片均在文件中,且图片名均是label.png,所以需要批量提取label.png,其他4个文件没有用,代码如下

# 将标签图从json文件中批量取出
import os
import shutilpath = r'D:\postgraduate\test'  # 生成的*_json文件夹路径
dirpath = r'D:\postgraduate\test\output'  # 分割掩码放置的目标文件夹路径# 确保目标目录存在
os.makedirs(dirpath, exist_ok=True)for eachfile in os.listdir(path):if os.path.isdir(os.path.join(path, eachfile)):source_file = os.path.join(path, eachfile, 'label.png')destination_file = os.path.join(dirpath, eachfile.split('_')[0] + '.png')if os.path.exists(source_file):try:shutil.copy(source_file, destination_file)print(eachfile + ' successfully moved')except Exception as e:print(f'Error moving {eachfile}: {e}')

使用时,只需将path和dirpath修改为你自己的路径即可。

标注图片转单通道

关于图片的概念见单通道、三通道、灰度图、黑白图、三通道转灰度图(单通道)。
图片的转换随便搜索就有。

http://www.lryc.cn/news/506676.html

相关文章:

  • Fisco-Bcos-java-SDK 利用java与fisco-Bcos区块链上的智能合约交互(以HelloWorld为例)
  • OpenHarmony-3.HDF Display子系统(6)
  • Nginx中Server块配置的详细解析
  • php学习资料分享
  • EE308FZ_Sixth Assignment_Beta Sprint_Sprint Essay 3
  • Eureka学习笔记-服务端
  • 无限次使用 cursor pro
  • 网站运维之整站同步
  • 【机器人】Graspness 端到端 抓取点估计 | 论文解读
  • 力扣2300.咒语和药水的成功对数(二分法)
  • WEB开发: 全栈工程师起步 - Python Flask +SQLite的管理系统实现
  • 云原生周刊:Kubernetes v1.32 正式发布
  • 京准电钟:电厂自控NTP时间同步服务器技术方案
  • 深入探索Flink的复杂事件处理CEP
  • clickhouse-数据库引擎
  • 力扣hot100——哈希
  • 少样本学习之CAML算法
  • C# 中的闭包
  • 网络编程 03:端口的定义、分类,端口映射,通过 Java 实现了 IP 和端口的信息获取
  • 制作项目之前的分析
  • LeetCode 1925 统计平方和三元组的数目
  • java开发入门学习三-二进制与其他进制
  • C/S软件授权注册系统(Winform+WebApi+.NET8+EFCore版)
  • Linux —— 管理进程
  • Diffusino Policy学习note
  • 【Python】*args和**kwargs
  • 使用正则表达式提取PDF文件页数的实现方案
  • Android实现RecyclerView边缘渐变效果
  • springboot443旅游管理系统(论文+源码)_kaic
  • 利用git上传项目到GitHub