栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python处理PPOCRLabel标注的数据用于LPRNet与Yolo的训练

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python处理PPOCRLabel标注的数据用于LPRNet与Yolo的训练

使用PPOCRLabel对车牌图片进行标注后,会生成Label.txt、rec_gt.txt两个文件和crop_img这个文件夹,现在我需要从中提取数据用于Yolo车牌检测的训练以及LPRNet车牌识别的训练。
代码如下:

import os

filename = "./yolo_labels"

"""
# 读取数据文件
"""
def read_txt(file_name):
    data = []
    file = open(file_name,'r',encoding='utf-8')
    file_data = file.readlines() #读取所有行
    for row in file_data:
        tmp_list = row.split(' ')
        data.append(tmp_list) #将每行数据插入data中
    file.close()
    return data

"""
# 创建文件夹
"""
def create_folder(filename):
    filename = filename.strip()
    filename = filename.rstrip("\")
    isExists = os.path.exists(filename)

    if not isExists:
        os.makedirs(filename)
        print(filename + "创建成功")
        return True
    else:
        print(filename + "已存在")
        return False

"""
# 创建txt标注文件
"""
def txt_create(name, msg):
    desktop_path = filename # 新创建的txt文件的存放路径
    full_path = desktop_path + "/" + name + '.txt'
    
    if os.path.exists(full_path):
        file = open(full_path, 'a',encoding='utf-8')
        file.write(msg+'n')
        file.close()
    else:
        file = open(full_path, 'w',encoding='utf-8')
        file.write(msg+'n')
        file.close()

"""
# 坐标归一化
"""
def normalization(xmin,ymin,xmax,ymax,img_w,img_h):
    x = round((xmin+xmax)/(2.0*img_w),6)
    y = round((ymin+ymax)/(2.0*img_h),6)
    w = round((xmax-xmin)/(1.0*img_w),6)
    h = round((ymax-ymin)/(1.0*img_h),6)
    return x,y,w,h

if __name__=="__main__":
    data = read_txt("Label.txt") #原始数据表
    create_folder("yolo_labels")

    for img_data in data:
        img_name = str(img_data).split("\t")[0].split('/')[1] #每行数据提取图片名
        xywh = str(img_data).split("\t")[1].split("\n")[0].replace("',","").replace("'","").strip('[').strip(']').replace("false","1").replace("ture","1") #每行数据提取坐标信息
        xywh = eval(xywh) #转换为元组或者字典
        if type(xywh) == tuple:
            for xy_line in xywh:
                    yolo_data = normalization(xy_line['points'][0][0], xy_line['points'][0][1], xy_line['points'][2][0], xy_line['points'][2][1], 2048, 1536) #处理每个字典的坐标信息,转换为归一化后的yolo标注格式
                    #print("0 %s %s %s %s" % (str(yolo_data[0]) , str(yolo_data[1]) , str(yolo_data[2]) , str(yolo_data[3])))
                    print(img_name)
                    txt_create(img_name, "0 %s %s %s %s" % (str(yolo_data[0]) , str(yolo_data[1]) , str(yolo_data[2]) , str(yolo_data[3])))
        if type(xywh) == dict:
            yolo_data = normalization(xywh['points'][0][0], xywh['points'][0][1], xywh['points'][2][0], xywh['points'][2][1], 2048, 1536)
            txt_create(img_name, "0 %s %s %s %s" % (str(yolo_data[0]) , str(yolo_data[1]) , str(yolo_data[2]) , str(yolo_data[3])))
            #print("0 %s %s %s %s" % (str(yolo_data[0]) , str(yolo_data[1]) , str(yolo_data[2]) , str(yolo_data[3])))
            print(img_name)
import os

filename = "./all_labels"

"""
# 读取数据文件
"""
def read_txt(file_name):
    data = []
    file = open(file_name,'r',encoding='utf-8')
    file_data = file.readlines() #读取所有行
    for row in file_data:
        tmp_list = row.split(' ')
        data.append(tmp_list) #将每行数据插入data中
    file.close()
    return data

"""
# 创建文件夹
"""
def create_folder(filename):
    filename = filename.strip()
    filename = filename.rstrip("\")
    isExists = os.path.exists(filename)

    if not isExists:
        os.makedirs(filename)
        print(filename + "创建成功")
        return True
    else:
        print(filename + "已存在")
        return False

"""
# 创建txt标注文件
"""
def txt_create(name, msg):
    desktop_path = filename # 新创建的txt文件的存放路径
    full_path = desktop_path + "/" + name + '.txt'
    file = open(full_path, 'w',encoding='utf-8')
    file.write(msg)
    file.close()


if __name__=="__main__":
    data = read_txt("rec_gt.txt") # 原始数据表
    create_folder("all_labels")
    for data_line in data: # 读取每行数据
        txt_file_name = data_line[0].strip().split('t')[0].split(".jpg")[0].split('crop_img/')[1] # 提取图片名称
        txt_file_content = data_line[0].strip().split('t')[1] # 提取文件内容
        print(txt_file_name)#文件名
        print(txt_file_content)
        txt_create(txt_file_name, txt_file_content)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920817.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号