Labelme数据标签制作

一、Labelme安装1、Anaconda下载、安装2、虚拟环境搭建及labelme包安装(1)虚拟环境搭建(2)labelme包安装

二、Labelme使用:标签制作1、对有类别图像进行标注(做故障样本)2、对无类别图像进行标注(做正样本)

三、Labelme生成的json文件转为png文件1、处理单张json文件2、批量处理json文件3、生成的label批量存放4、将label转换为黑白0-1mask

一、Labelme安装

1、Anaconda下载、安装

具体安装步骤,请参考我前面写的配置cuda环境时的博客 https://blog.csdn.net/qq_47191797/article/details/133678473?spm=1001.2014.3001.5502

2、虚拟环境搭建及labelme包安装

(1)虚拟环境搭建

安装好conda以后,可以在“开始”菜单栏里找到以下Anaconda Prompt打开 开始为Labelme创建虚拟环境,在Anaconda Prompt中运行以下代码(输入+回车即可):

conda create -n labelme python=3.6

其中labelme及python版本可根据自己需要自定义,如下图所示: labelme虚拟环境创建成功,就可以激活该环境进行使用了(同样输入命令并回车)

conda activate labelme

(2)labelme包安装

安装labelme包命令:

conda install labelme

或者

pip install labelme

如果安装速度特别慢,可以在pip命令后面加上国内镜像源

pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple/

conda也可以添加国内镜像源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

#显示检索路径

conda config --set show_channel_urls yes

#显示镜像通道 conda config --show channels

二、Labelme使用:标签制作

在上述基础上,调用labelme包 【同样,依旧在“开始”菜单栏里找到Anaconda打开其中的Anaconda Prompt输入命令(如下图)】 激活创建的labelme虚拟环境,再通过labelme命令+回车即会弹出labelme窗口

打开数据图像后,点击鼠标右键选择所需的标签方式进行打标签,若采用第一个,请记得第一个点与最后一个点重合!!!!具体标注方式可百度~~~ 标注制作完毕,既可以点击左上角“file”-“save”或者“save as” 将标注好的图像进行保存

注意:labelme保存的文件是json文件

1、对有类别图像进行标注(做故障样本)

打开所需要标注的图像文件夹---->选择图像---->右键---->create polygons(根据需求选择)---->对目标进行标注(起点终点需要重叠组成一个封闭图形)---->输入类别---->左上角file-save as保存即可!!!!得到json文件

2、对无类别图像进行标注(做正样本)

labelme中打开图像打开文件夹,直接左上角file-save as保存即可(没有目标不需要进行标注),同样得到json文件

注意:如果是生成的json文件时无目标的label在转换成png格式时,可能会报错

UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 117: illegal multibyte sequence

具体解决办法如下: 进入你的anaconda安装路径下D:\Anaconda3\envs\labelme\Lib\site-packages\labelme\cli位置,找的json_to_dataset.py文件用pycharm打开!找到第39行代码:

data = json.load(open(json_file))

替换为:

data = json.load(open(json_file, encoding='gb18030', errors='ignore'))

三、Labelme生成的json文件转为png文件

1、处理单张json文件

首先,虽然labelme生成的json文件,但其实该模块下有将其转换为png格式的py文件,即你所安装的Anaconda路径中cli文件中json_to_dataset.py:

只需在labeme环境下,输入命令(路径切换为自己的安装路径)进入json_to_dataset.py所在位置

cd D:\Anaconda3\envs\labelme\Lib\site-packages\labelme\cli

然后,调用json_to_dataset.py文件处理json文件并生成png,后面为labelme生成的json文件路径:

labelme_json_to_dataset F:\crack\Label\Drying2\json_file\d02-001.json

注意:根据路径可发现:json_to_dataset.py只能依次处理一个json文件 即可得到一个包含四个文件的文件夹 分别为:原始数据图、label(一般数据标签只需要这个,可单独存放一个文件夹),label的txt文本格式信息、label与原始图覆盖重叠。

2、批量处理json文件

批量处理json文件的方式如下:

import os

import glob

path = r'F:\crack\Label\Drying2\json_file' # 这里是指.json文件所在文件夹的路径

for json in os.listdir(path):

if json.endswith('.json'):

print(json)

json_file = glob.glob(os.path.join(path, json)) # 返回为列表

print(json_file)

# os.system("activate labelme")

for file in json_file: # 读取列表中路径

os.system("labelme_json_to_dataset.exe %s" % (file))

print(file)

3、生成的label批量存放

将json全部转为png格式后,为了方便使用label图,将每个数据图像的label图提出,存放在一个文件夹的方式如下:

import os

import shutil

path = 'F:/crack/Label/Drying2/json_file/'

dirpath = 'F:/crack/Label/Drying2/batch_label/'

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)

print(eachfile.split('_')[0])

print(eachfile + ' successfully moved')

4、将label转换为黑白0-1mask

import os

import cv2

import numpy as np

bace_path = r"F:\crack\Label\Drying2\batch_label"

save_path = r"F:\crack\Label\Drying2\annotation"

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)

Record Over!

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: