從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、總結

      。。。。。。有錯誤的地方希望大家批評指正。

 

 

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