以下是将PPOCRLabel标注的txt格式转换成labelme能修改的json格式的完整攻略:
1. 确认PPOCRLabel标注格式
在将PPOCRLabel标注的txt格式转换成labelme能修改的json格式之前,我们需要首先确定PPOCRLabel标注格式的具体规则和内容。PPOCRLabel标注的txt格式通常是由以下信息组成:
图片名称,标注框数量,x0,y0,x1,y1,x2,y2,x3,y3,标签名称
其中,图片名称是指已经在标注工具中打开的图片文件名;标注框数量是指要标注的图片中目标物体数量;x0、y0、x1、y1、x2、y2以及x3、y3是指目标物体在图片中所对应的四个顶点坐标;标签名称是指目标物体所属的类别名称。
2. 下载和安装labelme
接下来,我们需要从官方网站或Github中下载和安装labelme工具。labelme是一款免费开源的图像标注工具,使用Python语言编写。
3. 将PPOCRLabel标注的txt格式转换为labelme支持的json格式
我们可以使用以下代码将PPOCRLabel标注的txt格式转换为labelme支持的json格式:
from labelme import utils
import json
def txt2json(txt_file_path, json_save_path):
# 读取txt文件
with open(txt_file_path, 'r') as f:
lines = f.readlines()
# 设置labelme json格式模板
json_dict = {
"version": "4.5.7",
"flags": {},
"shapes": [],
"imagePath": "",
"imageData": None,
"imageHeight": 0,
"imageWidth": 0
}
# 将txt内容转换为json格式
for line in lines:
line = line.strip().split(',')
img_name = line[0]
x0, y0, x1, y1, x2, y2, x3, y3 = line[2:10]
# 设置标注框坐标和标签类别
shape_attr = {
"label": line[-1],
"points": [[int(x0), int(y0)], [int(x1), int(y1)], [int(x2), int(y2)], [int(x3), int(y3)]],
"group_id": None,
"shape_type": "polygon",
"flags": {}
}
# 将标注框添加到labelme格式模板中
json_dict["shapes"].append(shape_attr)
# 将json格式数据保存到指定路径
with open(json_save_path, "w") as f:
json.dump(json_dict, f, ensure_ascii=False)
4. 使用示例
假设我们需要将以下图片的PPOCRLabel标注txt格式转换为labelme JSON格式:
图片文件名:test1.jpg
标注框数量:2
标注框1坐标:x0=144,y0=226,x1=221,y1=231,x2=219,y2=261,x3=146,y3=256
标注框1类别:其他
标注框2坐标:x0=441,y0=250,x1=487,y1=252,x2=487,y2=282,x3=444,y3=281
标注框2类别:人
则可以使用以下代码将其转换为labelme JSON格式:
# 转换标注文件格式
txt2json("test1.txt", "test1.json")
经过上述步骤,我们可以得到一个标注格式为labelme支持的json格式的标注文件:test1.json,可以使用labelme工具进行修改和编辑。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PPOCRLabel标注的txt格式如何转换成labelme能修改的json格式 - Python技术站