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

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 shutil

path = 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.kler.cn/a/447910.html

相关文章:

  • Elasticsearch-分词器详解
  • 【C语言】动态内存管理:详解malloc和free函数
  • macos 隐藏、加密磁盘、文件
  • 【Leetcode 热题 100】124. 二叉树中的最大路径和
  • 数据结构_平衡二叉树
  • datasets 笔记:加载数据集(基本操作)
  • oracle dblink 的创建及使用
  • 在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。
  • Dijkstra(迪杰斯特拉)最短路径算法可视化演示
  • torch.unsqueeze:灵活调整张量维度的利器
  • 插入排序 计数排序 数据库的三范式
  • YOLO11改进-注意力-引入自调制特征聚合模块SMFA
  • 2024年智能船舶与机电系统
  • Deformable DETR中的look forword once
  • 排序算法进一步总结
  • 使用 AI 辅助开发一个开源 IP 信息查询工具:一
  • thinkphp 多选框
  • < Chrome Extension : TamperMonkey > 去禁用网页的鼠标的事件 (水文)
  • Pytorch | 利用MI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
  • 浅析InnoDB引擎架构(已完结)
  • Leetcode 37 Sudoku Solver
  • FastJSON 默认不会包含值为 null 的字段
  • C 语言实现四旋翼飞行器姿态控制:基于 PID 控制器(2)
  • 【前端js】 indexedDB Nosql的使用方法
  • Sourcegraph 概述
  • Redis篇--常见问题篇8--缓存一致性3(注解式缓存Spring Cache)