批量转换labelme标注后json文件为图片

这篇具有很好参考价值的文章主要介绍了批量转换labelme标注后json文件为图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文的代码可实现批量转换指定文件夹中的所有文件,抽取对应的图片至文件夹,标注图片转单通道以及实现分割区域在原图上的显示。
文章内容参考labelme批量制作数据集教程,写这个博客我主要是想自己加深一下印象,另外梳理一下代码,记录一下我自己遇到的问题,如有侵权,可联系我删除!

前面关于labelme的安装和使用我简单复述一下链接里的内容,大家有兴趣可以去看链接的博客,写的很详细,很好!
一、labelme的安装(windows)
labelme的安装可以通过创建虚拟环境,也可以直接pip intall labelme进行安装,我本人是直接pip进行安装,毕竟重要的是最后保存的标签json文件,labelme只是一个工具而已,能够正常使用就行。但是使用虚拟环境好处在于与本地环境区分开,就算labelme出现什么错误,不至于影响本地环境,这个依据个人情况而定。但是是否创建虚拟环境安装labelme在后续多张图片转换的程序上有一点点小区别,后面提到。
虚拟环境安装labelme
conda create --name=labelme python=3.6
activate labelme
pip install pyqt5
pip install labelme

二、labelme的数据标注使用
在虚拟环境下安装的labelme,需要在cmd中输入activate labelme激活labelme环境,然后在激活环境下输入labelme打开labelme界面,退出输入deactivate即可。
我本人用pip安装,直接打开cmd输入labelme即可使用。
具体labelme的使用,打开需要标注的文件,然后用以顶点的方式勾勒特征区域即可,保存后是json文件,json文件可用记事本打开,里面包含一些可读信息。

三、labelme标签的批量转换
1.单张图片的转换
json文件转换成png文件,如果是单张图片的话,比较简单,在安装了labelme的环境下,打开cmd,使用
labelme_json_to_dataset E:\test\image\001.json
写上自己需要转换的json文件的路径及文件名即可实现转换。
然后在json文件所在的文件夹内,会生成另外一个文件夹,命名和转换前json文件的名字相同,只不过.改成了_。里面会有四个文件,img.png, label.png, label_name.txt, label_viz.png,据说以前有五个文件,有一个.yaml文件,新版本labelme没有这个,具体就不太清楚了,当然最重要的是label.png
文件,这个就是后期深度学习的标签文件了。
2.多张图片批量的转换
当数据文件比较多的时候,需要用到批量的方法,在链接里提到了脚本循环法,我感觉还是程序法比较实用。
原文的程序是
import os
import glob
path = r’D:\data_count\WLI’ # 这里是指.json文件所在文件夹的路径
json_file = glob.glob(os.path.join(path, “*.json”))
os.system(“activate labelme”)
for file in json_file:
os.system(“labelme_json_to_dataset.exe %s” % (path + ‘/’ + file))
在使用的时候根据自己的情况修改json文件所在路径和自己的虚拟环境
我本人在使用的时候遇到几个问题,它本身代码没有问题,是我自己的实际情况有些出入
1.首选我自己的文件是保存在google drive里的,所以在读取文件时不能直接通过写path的路径进行读取,我是把文件拷贝到本地的时候,添加路径然后才可以的
2.第二点就是在这里是用到了自己的虚拟环境,然后利用到labelme_json_to_dataset.exe功能进行批量转换,但是如果一开始就是pip安装的,则不需要这么麻烦,直接os.systerm()即可,但是括号里要填到具体的label_json_to_dataset.exe的路径,不然无法读取。
我的代码
批量转换labelme标注后json文件为图片
反正无论是哪种情况,基本上使用以上的代码就可以将json文件转成含图片的文件夹,生成的文件夹和之前的json文件在一个文件夹里

四、标签图片的读取
基本上我们做深度学习的学习,我们是需要将标签文件单独放在一个文件夹里的,所以这里就涉及到一个标签图片的读取问题,生成的label文件图片是在文件中的,且图片名均是label.png,所以只需要批量提取label.png就可以。

import os
import shutil

path = ‘D:/LCI/’
dirpath = ‘D:/annotations/LCI/’

for eachfile in os.listdir(path):
if os.path.isdir(path + eachfile):
if os.path.exists(path + eachfile + ‘/label.png’):
shutil.copy(path + eachfile + ‘/label.png’, dirpath + eachfile.split(‘_’)[0] + ‘.png’)
print(eachfile + ’ successfully moved’)
在使用这段代码时,我每次都只能读取一个文件夹的图片,在找到原因后我发现是因为我和链接里的作者的文件名的命名方式不一样,当我把split后面方括号里的索引改成1的时候,问题就解决了。
python3里split()的方法是指指定分隔符对字符串进行切片,如果第二个参数num有指定值,则分割为num+1个字符串。
其语法为
批量转换labelme标注后json文件为图片
其中各参数为
批量转换labelme标注后json文件为图片
在菜鸟教程中的实例是
批量转换labelme标注后json文件为图片
经过labelme之后的文件名一般是带有_的,所以使用_作为分隔符,然后[ ]中的数字代表索引,可以对分隔后的文件名进行操作,链接里的图片命名方式是数字在前面,所以索引为0没问题,但恰巧我的命名方式是I_数字_json,所以我的索引应该改成1,python对列表的索引还挺有意思的,它是列表索引从0开始,依次1,2,3,但是如果第一位是0,列表里最后一位用-1也可以索引。

五、标注图片转单通道
在链接里,他提供了一种将ground_truth转换为8位的单通道黑白图像,代码如下,我自己没试过,代码先贴上
import os
import cv2
import numpy as np
bace_path = r"D:\research\data\train\mask"
save_path = r’D:\research\data\train’

for im in os.listdir(bace_path):
img = cv2.imread(os.path.join(bace_path, im))
b, g, r = cv2.split(img)
r[np.where(r != 0)] = 255
cv2.imwrite(os.path.join(save_path, im), r)

六、在原图中显示标签区域
基本上我们使用labelme进行打标签后,就相当于手动进行了一次分割,我们可以获得原图,标签图,以及标签在原图上显示,但是我们如果只需要在图片上显示原图在标签区域的图像信息,可以进行以下操作
批量转换labelme标注后json文件为图片
其实就是读取了json转化后的json文件里的原图img.png和标签图片label.png做相乘,因为标签图的像素值是0或1,只有在标记区域的值为1,做相乘即可以显示标签的原图。

另外MATLAB版本表示为
for i = 265:365
dirr= (strcat(‘G:\My Drive\2.Shared with me\Trang&Jiaqing\Data\P21mask_img\I_’,num2str(i),‘json’));
img = imread(strcat(dirr,‘img.png’));
label = imread(strcat(dirr,‘label.png’));
img_label = img.*label;
imshow(img_label);
img_name = strcat('G:\My Drive\1.Project\2022_Palate\Reconstruction\Segmentation\I_lb
’,num2str(i),‘.png’);
imwrite(img_label,img_name);
end文章来源地址https://www.toymoban.com/news/detail-438581.html

到了这里,关于批量转换labelme标注后json文件为图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用labelme标注矩形框和关键点得到的json文件转txt格式用于yolov5-face训练

    目录 我用labelme标注完的json文件长这样:标注了两种:矩形框和点 我要转换的txt格式长这样: json格式转txt如下: 从txt查看标注结果 参考的这位博主并在此基础上做了改动。(484条消息) LabelMe 标注的json转txt的格式转换教程_无损检测小白白的博客-CSDN博客 我用labelme标注完的

    2024年02月12日
    浏览(35)
  • 使用Python和OpenCV批量可视化labelme分割标注结果

    【原创声明】 本文为博主原创文章,未经博主允许不得转载。 更多算法总结请关注我的博客:https://blog.csdn.net/suiyingy。         在计算机视觉领域中,图像分割是一项重要的任务,它可以将图像中的不同物体或区域进行像素级别的分割。而在图像分割任务中,人工标注数

    2024年04月16日
    浏览(23)
  • 目标检测yolo格式与labelme标注互相转换及其可视化

              yolo目标检测数据采用矩形框进行标注,其标注格式为[cls_id xp yp wp hp],cls_id表示目标所属的类别序号。xp、yp表示目标中心点相对坐标,其中xp等于目标的绝对横坐标除以图像宽度,yp等于目标的绝对纵坐标除以图像高度。wp和hp表示目标的相对宽度和高度,其中

    2024年02月05日
    浏览(31)
  • 使用LabelMe标注目标检测数据集并转换为COCO2017格式

    当你安装好labelme启动后,open dir开始标注,选择Create Rectangle 拖拽画框,然后选择类别(没有就直接输入会自动新建),标注好一幅图后点击next image会弹框提示保存json文件,保存即可。 当你将所有图像标注完后,点击Next Image是没有反应的(因为没有Next图了),此时直接x掉

    2024年02月11日
    浏览(30)
  • VOC/YOLO/COCO数据集格式转换及LabelImg/Labelme/精灵标注助手Colabeler标注工具介绍

    数据集格式:VOC(xml)、YOLO(txt)、COCO(json) 本文主要对 Label格式 ,以及 LabelImg、Labelme、精灵标注助手Colabeler 这常用的三种数据标注软件进行介绍。 LabelImg是目标检测数据标注工具,可以标注标注两种格式: VOC标签格式,标注的标签存储在xml文件 YOLO标签格式,标注的标签存储在

    2023年04月22日
    浏览(74)
  • python小脚本——批量将PDF文件转换成图片

    语言:python 3 用法:选择PDF文件所在的目录,点击 确定 后,自动将 该目录下的所有PDF 转换成单个图片,图片名称为:   pdf文件名.page_序号.jpg 如运行中报错,需要自行根据报错内容按照缺失的库 例如: 这里提供两种源码,第一种是在代码中手动添加pdf所在目录 第二种是点

    2024年02月11日
    浏览(43)
  • 脚本:PDF文件批量转换成图片(python3)

    语言:python 3 用法:选择PDF文件所在的目录,点击 确定 后,自动将该目录下的所有PDF转换成单个图片,图片名称为: pdf文件名.page_序号.jpg 如运行中报错,需要 自行根据报错内容安装缺失的库 例如: 提供两种源码 第一种是在代码中手动添加pdf所在目录 第二种是点击运行后

    2024年02月11日
    浏览(40)
  • python脚本——批量将word文件转换成多张图片

    前提:有时候需要快速查看word文档的内容是否自己需要的,或者就是单纯需要将word文档转换成一张张图片。 思路:word文档直接生成图片比较蛮烦,可能会引起格式变化,就先将word文档转换成PDF,然后将PDF文档转换成图片。 语言:python 3 用法:点击运行后,弹出窗口选择文件

    2024年02月11日
    浏览(36)
  • 目标检测标注文件yolov5(txt)格式转coco(json)格式详解及代码实现

    Reference:https://blog.csdn.net/qq_39686950/article/details/119153685 前言 正好自己做目标检测任务更换模型需要使用不同格式的标注文件,所以在网上找了半天类似博文,发现大多都只有代码或者解释不全,对新手不够友好,我在转换的过程中就debug了半天才转换成功,所以写下这篇博文

    2024年02月04日
    浏览(46)
  • 【ChatGPT】利用ChatGPT将图片转换成JSON文件

            我在创建自己的GPT时,通常会上传一些JSON文件作为知识库,我还制作了一些脚本工具,将PDF文件转换成JSON文件。但是在这个过程中产生一个问题,PDF文件中会有一些图表,JSON文件就不能存储和表达这些图表的内容了。那该怎么办呢?这里跟大家介绍一个方法,可

    2024年01月20日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包