语义分割数据集的标注
这里使用的是labelme语义分割软件。
安装直接使用指令:
pip install labelme
安装完成后,输入指令:labelme,即可打开软件,软件界面如下图所示:
打开软件之后一般需要做3项工作:
(1) 打开数据集存放的文件夹。
(2) 修改标注生成文件的存放位置,并取消在数据集的文件夹内保存标注的生成文件。此外,还需要选择自动保存功能。
(3) 选择标注的形式,一般选择多边形框进行标注。
标注中使用的快捷键:
A:上一张图像
W:下一张图像
标注完成后,生成的文件类型为:json文件,如图所示:
json文件可以使用记事本软件打开,打开后如下图所示:
在获得json文件后,需要制作标签信息。执行以下代码进行转换:
# 在cmd中运行代码:python json2png.py <json文件夹>,单独运行这个文件会报错
import os
import os.path as osp
import cv2
import shutil
import numpy as np
from PIL import Image
def json2png(json_folder, png_save_folder):
#osp.isdir(png_save_folder)用于判断参数是否为目录。
if osp.isdir(png_save_folder):
#递归删除整个文件夹下所有文件,包括此文件夹;
shutil.rmtree(png_save_folder)
# 递归创建文件夹;
os.makedirs(png_save_folder)
#返回指定路径下的文件和文件夹列表。
json_files = os.listdir(json_folder)
for json_file in json_files:
print(json_file)
json_path = osp.join(json_folder, json_file)
os.system("labelme_json_to_dataset {}".format(json_path))
label_path = osp.join(json_folder, json_file.split(".")[0] + "_json/label.png")
png_save_path = osp.join(png_save_folder, json_file.split(".")[0] + ".png")
label_png = cv2.imread(label_path, 1)
# gray_img = cv2.cvtColor(label_png, cv2.COLOR_RGB2GRAY)
# imginfo=label_png.shape
# print(imginfo)
# height=imginfo