labelme的json数据转换成coco的json数据

博主在将labelme的json数据转换为coco格式时遇到报错,原因是labelme中点数据为整型,而json不支持此类数据序列化。解决方案是创建自定义JSONEncoder类并进行相应修改。
摘要由CSDN通过智能技术生成

这个问题困扰了我好些时间,转换的时候总是报错。 我的错主要是json保存的时候出错,TypeError: Object of type 'int32' is not JSON serializable,因为我labelme的json中point数据是整型,但是json好像不支持这种数据序列化,经过一番百度,结果是需要自己写一个解析类,继承json.JSONEncoder就可以。 还需要改一个地方:img_b64_to_array改成img_b64_to_arr

下面贴图代码:

# -*- coding:utf-8 -*-
# !/usr/bin/env python

import argparse
import json
import matplotlib.pyplot as plt
import skimage.io as io
import cv2
from labelme import utils
import numpy as np
import glob
import PIL.Image

class MyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.integer):
            return int(obj)
        elif isinstance(obj, np.floating):
            return float(obj)
        elif isinstance(obj, np.ndarray):
            return obj.tolist()
        else:
            return super(MyEncoder, self).default(obj)

class labelme2coco(object):
    def __init__(self, labelme_json=[], save_json_path='./tran.json'):
        '''
        :param labelme_json: 所有labelme的json文件路径组成的列表
        :param save_json_path: json保存位置
        '''
        self.labelme_j
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值