labelme标注的json文件转类别灰度图

将json文件放入一个文件夹内。运行json2gray.py:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# !H:\Anaconda3\envs\new_labelme\python.exe
import argparse
import json
import os
import os.path as osp
import base64
import warnings
 
import PIL.Image
import yaml
 
from labelme import utils
 
import cv2
import numpy as np
from skimage import img_as_ubyte
 
 
# from sys import argv
 
def main():
    warnings.warn("This script is aimed to demonstrate how to convert the\n"
                  "JSON file to a single image dataset, and not to handle\n"
                  "multiple JSON files to generate a real-use dataset.")
 
    json_file = "./make1"       ###json所在文件夹
 
    # freedom
    list_path = os.listdir(json_file)
    print('freedom =', json_file)
    for i in range(0, len(list_path)):
        path = os.path.join(json_file, list_path[i])
        if os.path.isfile(path):
 
            data = json.load
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
可以使用labelme的官方工具labelme2voc将json文件化为VOC格式的标注文件,然后使用VOC格式的标注文件生成灰度的png像。 具体步骤如下: 1. 安装labelme2voc 可以使用pip安装: ``` pip install labelme2voc ``` 2. 将json文件化为VOC格式的标注文件 使用labelme2voc命令将json文件化为VOC格式的标注文件: ``` labelme2voc input_json_dir output_voc_dir ``` 其中,input_json_dir是存放json文件的目录路径,output_voc_dir是输出VOC格式标注文件的目录路径。 例如,有一个json文件存放在/home/user/data/json目录下,要将其化为VOC格式标注文件并存放在/home/user/data/voc目录下,可以执行以下命令: ``` labelme2voc /home/user/data/json /home/user/data/voc ``` 执行完毕后,会在输出目录下生成与json文件对应的VOC格式标注文件。 3. 将VOC格式标注文件生成灰度的png像 可以使用VOC格式标注文件生成灰度的png像的工具有很多,例如opencv、PIL等。 以opencv为例,可以使用以下代码将VOC格式标注文件生成灰度的png像: ``` import cv2 import os input_voc_dir = "/home/user/data/voc" output_gray_dir = "/home/user/data/gray" if not os.path.exists(output_gray_dir): os.makedirs(output_gray_dir) for filename in os.listdir(input_voc_dir): if filename.endswith(".xml"): xml_file = os.path.join(input_voc_dir, filename) img_file = xml_file.replace(".xml", ".jpg") img = cv2.imread(img_file) h, w = img.shape[:2] gray = np.zeros((h, w), np.uint8) tree = ET.parse(xml_file) for obj in tree.findall("object"): name = obj.find("name").text bndbox = obj.find("bndbox") xmin = int(bndbox.find("xmin").text) ymin = int(bndbox.find("ymin").text) xmax = int(bndbox.find("xmax").text) ymax = int(bndbox.find("ymax").text) gray[ymin:ymax, xmin:xmax] = 255 if name == "target" else 128 gray_file = os.path.join(output_gray_dir, filename.replace(".xml", ".png")) cv2.imwrite(gray_file, gray) ``` 其中,input_voc_dir是存放VOC格式标注文件的目录路径,output_gray_dir是输出灰度png像的目录路径。 该代码会遍历目录下所有的xml文件(即VOC格式标注文件),根据标注信息生成相应的灰度的png像,并存放在输出目录下。其中,目标区域的像素值为255,非目标区域的像素值为128。 执行完毕后,会在输出目录下生成与VOC格式标注文件对应的灰度png像。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值