labelme是一个经典标注工具,往往我们使用标注完图片保存后会得到一个个Json文件,但json文件不能直接作为数据集使用,我们还需要将它转为带标签语义的Png格式图片。
网上看了很多教程,有看过更换labelme环境中Anaconda\envs\labelme\Lib\site-packages\labelme\cli目录下的json_to_dataset.py内容的,但是我没有成功过。
今天看到一个教程是使用一段代码的批处理文件,可以直接转,他的本质也是调用json_to_dataset.py但是不需要改代码,非常方便,与原文参考有一些变换,经过测试。下面详细交代方法。
- 准备需要标注的图片(图片最好按规则重命名),将图片放入一个文件夹,例如images,存放目录为D:\images
- 打开Anaconda Prompt 输入conda activate labelme(假设已经创建好labelme环境,安装好labelme),激活labelme环境
- 输入labelme自动打开labelme可视化操作界面,
- 选择Open Dir,打开imges目录,会将目录下的图片列表加载到Flie List,就可以更方便通过Next Image和Prev Image进行图片切换,File List处的滚动条也会根据进度条走动,这样更不容易遗漏图片
- 显示图片后选择Create Polygons进行多边形标注,这里右击可以选择其他方式,根据图片中需要标注轮廓进行框选拟合,拟合完成后形成闭环就会弹出标签标注框,可以自己输入类别,然后进行确定,确定完polygon labels处会显示使用的标签。然后点击Save,会将标注好的图片自动保存为同名的json文件,保存在images目录下
- 按第五步完成所有图片标注
- 在images目录下创建一个test.txt文本文件,打卡文本,复制输入以下代码
-
@echo off for %%i in (*.json) do labelme_json_to_dataset %%i pause
- 然后保存,重命名test.txt为test.bat文件,成为批处理文件,它可能会报错warnings但没关系可忽略,只是报错不能多张转化,会一张一张转的(我以一个例子为例)
- 回到anaconda下的labelme环境,切换目录至D:\images
- 输入test.bat回车即可,随即就会将一个个json文件,创建同名图片_json文件夹,里面生成4个文件,分别是原图img.png;红(标注区域)黑(背景)色图片label.png;label_names.txt(存放图片含有的类别标签列表);label_viz.png(带标注标签)
大功告成!