labelme注释格式转coco数据格式 再版

前面已经写过一篇了,但是那个程序存在问题:必须要手动输入你的标签,而且又受到依赖包的限制,很不方便。再加上现在我对数据有了新的需求,所以再总结一篇。
参考博文代码:目标检测前奏:labelme的矩形框标记好数据以后,转成COCO格式
根据自己需求,加进了别的功能:随机分json注释为训练集和验证集,对应其图像也分为训练集和验证集。

import os
import sys
import json
import cv2
import base64
import numpy as np
import glob
import PIL
from PIL import Image, ImageDraw
from sklearn.model_selection import train_test_split
import shutil

def base64_cv2(base64_str):
    """
    base64转cv2
    """
    imgString = base64.b64decode(base64_str)
    # nparr = np.fromstring(imgString, np.uint8)
    nparr = np.frombuffer(imgString, np.uint8)  # fromstring有弃用命令警告,替换为frombuffer
    image = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
    return 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):
        """
        :param labelme_json: 所有labelme的json文件路径组成的列表
        :param save_json_path: json保存位置
   
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值