Labelme的安装及使用详细教程

安装步骤

用pip安装labelme标定工具(默认安装了Python):
在命令窗口输入:

pip install labelme

安装好后,直接在命令行输入labelme就可以打开
在这里插入图片描述
labelme打开界面如图:
Labelme的安装及使用详细教程_第1张图片

如果上述步骤安装不成功可按照该博客步骤尝试:
https://blog.csdn.net/CAUC_learner/article/details/99655776?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-9.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-9.control

使用方法

1.选择Open Dir:待标注图片数据的路径文件夹,即选择各自需要标注的图片所在的文件夹
Labelme的安装及使用详细教程_第2张图片
2. 选择多边形标注:
Labelme的安装及使用详细教程_第3张图片
3. 标注标签:
Labelme的安装及使用详细教程_第4张图片
Labelme的安装及使用详细教程_第5张图片
如果需要修改标点位置可点左侧:
在这里插入图片描述

撤销:ctrl+z

标签错误可右键更改:
Labelme的安装及使用详细教程_第6张图片
4. 选择自动保存:
Labelme的安装及使用详细教程_第7张图片
5. 点击下一张图片自动保存到文件打开地址:
在这里插入图片描述
Labelme的安装及使用详细教程_第8张图片
注:切忌不可用同一张图保存多次,会导致json文件无法转换!

json文件转换

import argparse
import json
import os
import os.path as osp
import warnings
 
import PIL.Image
import yaml
 
from labelme import utils
import base64
 
def main():
	count = os.listdir("./before/") #这里的文件夹改成json文件所在位置
	index = 0
	for i in range(0, len(count)):
		path = os.path.join("./before", count[i])

		if os.path.isfile(path) and path.endswith('json'):
			data = json.load(open(path,'rb'))
			path_name = data['imagePath']
			path_name = path_name.split('\\')[-1].split('.')[0]
			if data['imageData']:
				imageData = data['imageData']
			else:
				imagePath = os.path.join(os.path.dirname(path), data['imagePath'])
				with open(imagePath, 'rb') as f:
					imageData = f.read()
					imageData = base64.b64encode(imageData).decode('utf-8')
			img = utils.img_b64_to_arr(imageData)
			label_name_to_value = {'_background_': 0}
			for shape in data['shapes']:
				label_name = shape['label']
				if label_name in label_name_to_value:
					label_value = label_name_to_value[label_name]
				else:
					label_value = len(label_name_to_value)
					label_name_to_value[label_name] = label_value

			# label_values must be dense
			label_values, label_names = [], []
			for ln, lv in sorted(label_name_to_value.items(), key=lambda x: x[1]):
				label_values.append(lv)
				label_names.append(ln)

			assert label_values == list(range(len(label_values)))

			lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)

			captions = ['{}: {}'.format(lv, ln)
				for ln, lv in label_name_to_value.items()]
			lbl_viz = utils.draw_label(lbl, img, captions)

#生成的四个文件存在train_dataset文件夹里面
			if not os.path.exists("train_dataset"):
				os.mkdir("train_dataset")
			label_path = "train_dataset/mask"
			if not os.path.exists(label_path):
				os.mkdir(label_path)
			img_path = "train_dataset/imgs"
			if not os.path.exists(img_path):
				os.mkdir(img_path)
			yaml_path = "train_dataset/yaml"
			if not os.path.exists(yaml_path):
				os.mkdir(yaml_path)
			label_viz_path = "train_dataset/label_viz"
			if not os.path.exists(label_viz_path):
				os.mkdir(label_viz_path)

			PIL.Image.fromarray(img).save(osp.join(img_path, path_name+'.jpg'))

			utils.lblsave(osp.join(label_path, path_name+'.png'), lbl)
			PIL.Image.fromarray(lbl_viz).save(osp.join(label_viz_path, path_name+'.png'))

			warnings.warn('info.yaml is being replaced by label_names.txt')
			info = dict(label_names=label_names)
			with open(osp.join(yaml_path, path_name+'.yaml'), 'w') as f:
				yaml.safe_dump(info, f, default_flow_style=False)
			index = index+1
			print('Saved : %s' % path_name)
if __name__ == '__main__':
    main()

只需要更改一个json文件的位置即可

你可能感兴趣的:(深度学习,python)