任意四边形坐标标记格式txt文件转labelme标记的json格式文件

1.任意四边形坐标标记格式:tl_x,tl_y,tr_x,tr_y,br_x,br_y,bl_x,bl_y。从左上点开始顺时针旋转的四个顶点的坐标

2.转换代码:

import json
import base64
from PIL import Image
import io
import os
import cv2
import numpy as np

def generate_json(file_dir,file_name):
    str_json = {}
    shapes = []
    # 读取坐标
    fr = open(os.path.join(file_dir, file_name))
    for line in fr.readlines():  # 逐行读取,滤除空格等
        lineArr = line.strip().split(', ')
        points = []
        points.append([float(lineArr[0]),float(lineArr[1])])
        points.append([float(lineArr[2]),float(lineArr[3])])
        points.append([float(lineArr[4]),float(lineArr[5])])
        points.append([float(lineArr[6]),float(lineArr[7])])
        print(points)
        shape = {}
        shape["label"] = "plate_1"
        shape["points"] = points
        shape["line_color"] = []
        shape["fill_color"] = []
        shape["flags"] = {}
        shapes.append(shape)
    str_json["version"] = "3.14.1"
    str_json["flags"] = {}
    str_json["shapes"] = shapes
    str_json["lineColor"] = [0, 255, 0, 128]
    str_json["fillColor"] = [255, 0, 0, 128]
    picture_basename = file_name.replace('.txt', '.jpg')
    str_json["imagePath"] = picture_basename
    img = cv2.imread(os.path.join(file_dir, picture_basename))
    str_json["imageHeight"] = img.shape[0]
    str_json["imageWidth"] = img.shape[1]
    str_json["imageData"] = base64encode_img(os.path.join(file_dir, picture_basename))
    return str_json

def base64encode_img(image_path):
    src_image = Image.open(image_path)
    output_buffer = io.BytesIO()
    src_image.save(output_buffer, format='JPEG')
    byte_data = output_buffer.getvalue()
    base64_str = base64.b64encode(byte_data).decode('utf-8')
    return base64_str


file_dir = "C:\\txt_to_json"
file_name_list = [file_name for file_name in os.listdir(file_dir) \
						  if file_name.lower().endswith('txt')]
for file_name in file_name_list:
	str_json = generate_json(file_dir,file_name)
	json_data = json.dumps(str_json)
	jsonfile_name = file_name.replace(".txt",".json")
	f = open(os.path.join(file_dir, jsonfile_name), 'w')
	f.write(json_data)
	f.close()

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值