从Labelme标注得到的json文件中获取掩码

1、Labelme

      Labelme是深度学习(语义分割、实例分割)需要用到的图像标注软件。在标注好目标后会生成json文件,json文件中包含了标注的座标点信息,类别信息,原始图像信息。

2、背景

    通常在语义分割或者实例分割中GT(真实掩码)是一个多值(多=class_num+1)数组,实际上json文件清晰友好,但很多网络教程中的解析json文件都过于繁琐,个人觉得没有必要。因此在这里写的简单一些,供大家参考。

3、代码

     argparse是一个命令行解析模块(如果不喜欢可以不用),这里设了两个位置参数,第一个是json的文件目录路径,第二个是npy文件的保存目录路经。其中label_name_to_value是标签的信息,需要自己设置一下。utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)—>>>能够返回一个真实掩码的数组。

import argparse
import json
from labelme import utils
import numpy as np
import os


def create_npy():
    parser = argparse.ArgumentParser()
    parser.add_argument("json_file",help="input the json files'dir path")
    parser.add_argument("out_npy", help="input the out npy files'dir path")
    args = parser.parse_args()

    json_path = args.json_file
    npy_path = args.out_npy

    name_list=os.listdir(json_path)
    label_name_to_value = {'_background_': 0, "girl": 1, "cat": 2}
    i=0
    for name in name_list:
        if name.split(".")[-1] == "json":
            i += 1
            print("第%d个json文件,名字是:"%i,name)
            per_json=os.path.join(json_path,name)
            data = json.load(open(per_json))
            img = utils.img_b64_to_arr(data["imageData"])
            lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)
            base = name.split(".")[0] + ".npy"
            save_path = os.path.join(npy_path,base)
            np.save(save_path, lbl)
if __name__=="__main__":
    create_npy()

4、总结

      。。。。。。有错误的地方希望大家批评指正。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章