python处理PPOCRLabel标注的数据用于LPRNet与Yolo的训练
使用PPOCRLabel对车牌图片进行标注后,会生成Label.txt、rec_gt.txt两个文件和crop_img这个文件夹,现在我需要从中提取数据用于Yolo车牌检测的训练以及LPRNet车牌识别的训练。
代码如下:
import os
import cv2filename = "./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 Trueelse:print(filename + "已存在")return False"""
# 创建txt标注文件
"""
def txt_create(name, msg):desktop_path = filename # 新创建的txt文件的存放路径full_path = desktop_path + "/" + name.split('.')[0] + '.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"""
# 每张图片的尺寸
"""
def get_img_size(img_path):print(img_path)mat = cv2.imread(img_path)if mat is None:return matreturn mat.shapeif __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("true","1") #每行数据提取坐标信息#print(xywh)xywh = eval(xywh) #转换为元组或者字典img_size = get_img_size(img_name)if img_size is None:continueif 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], img_size[1], img_size[0]) #处理每个字典的坐标信息,转换为归一化后的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], img_size[1], img_size[0])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
import sysfilename = "./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 Trueelse: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()"""
# 判断中文
"""
def is_chinese(uchar):return True if u'\u4e00' <= uchar <= u'\u9fa5' else Falseif __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].replace('·','').replace('O', '0').replace('o', '0').replace('I', '1').replace('i', '1').replace(' ','') # 提取文件内容if len(sys.argv) == 2:if sys.argv[1] == "p":print(txt_file_name)#文件名print(txt_file_content)if len(txt_file_content) != 7:print(txt_file_name)#文件名print(txt_file_content)ch_flag = 0for tfc in txt_file_content:if is_chinese(tfc):ch_flag+=1if ch_flag >= 2:print(txt_file_name)#文件名print(txt_file_content)txt_create(txt_file_name, txt_file_content)
python处理PPOCRLabel标注的数据用于LPRNet与Yolo的训练相关推荐
- 【Python】深度学习中将数据按比例随机分成随机 训练集 和 测试集的python脚本
深度学习中经常将数据分成 训练集 和 测试集,参考博客,修改python脚本 randPickAITrainTestData.py . 功能:从 输入目录 中随机检出一定比例的文件或目录,移动到保存 ...
- python降维方法_机器学习数据降维方法总结(附python代码)
介绍 在机器学习实战时,如果面对一个数据集具有上千个特征,那么对于模型训练将是一个巨大的挑战.面对如此多的数据变量,如果我们认真的去分析每一个变量将耗费我们几周甚至几个月的时间,那么你估计也要被开除了 ...
- 可转债代码交流第二期:利用Python获取集思录数据(改)
上期内容讲解了宁稳网数据获取的方法(用于初步计算未上市可转债价格),具体方法参考第一期:可转债代码交流第一期:利用Python获取宁稳网数据(包含基本的环境搭建与Python编辑器安装方法) 本人并非 ...
- python 人形自动标注_自动设置人形生物
python 人形自动标注 The humanoid animation option in Unity 4 makes it possible to retarget the same animat ...
- python零基础入门大数据_【资源分享】零基础入门大数据(数据分析)经验分享...
声明: 开头还是要先申明一下的,博主纯粹是爱好,在业余时间学习相关的知识.希望能给博主一样情况的入门同学提供一个比较短的学习路径,提高学习效率.博主看过很多个学习的视频和数据,发现很多内容都是重复的, ...
- python爬去百度文库_利用Python语言轻松爬取数据[精品文档]
利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...
- python读取数据文件-python多种读写excel等数据文件的方式(收藏篇)
前言: python处理数据文件的途径有很多种,可以操作的文件类型主要包括文本文件(csv.txt.json等).excel文件.数据库文件.api等其他数据文件.下面小编整理下python到底有哪些 ...
- python与excel做数据可视化-Python的Excel操作及数据可视化
Excel表操作 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 安装xlrd pip install xlrd 简单的表格读取 ...
- python如何读取excel数据-使用Python读取电子表格中的数据
Python 是最流行.功能最强大的编程语言之一.由于它是自由开源的,因此每个人都可以使用.大多数 Fedora 系统都已安装了该语言.Python 可用于多种任务,其中包括处理逗号分隔值(CSV)数 ...
最新文章
- java开心农场安卓_开心农场之田园日记
- 数据结构与算法之基数排序
- Hibernate框架之入门配置
- python数列分段_按范围分段的Python数组
- update语句修改报错问题处理
- Deeping操作系统配置tomcat并运行第一个Javaweb程序
- Java多线程实现多用户与服务端Socket通信
- vue 基于eleui的自定义穿梭框Transfer
- 高考数学三角函数解题技巧 三角函数的图象与性质(高考题)
- 微信扫码提示在浏览器中打开的遮罩代码
- excel 添加换行符,去除换行符:
- 侵害个人信息被工信部点名仍未整改,桔子分期产品被下架,盛银消金和金美信消金为合作方
- 测试人的Java之Java入门
- 动态规划java实现数塔问题_动态规划入门_数塔问题
- 龙ol服务器维护补偿boss,总裁酷炫狂霸拽 《龙OL》练武场深处的BOSS
- 微信公众号更新缓存问题--批量添加版本号
- 冬季黄山(2~3 日游)攻略
- 腾讯地图api php经纬度转换地址,腾讯地图经纬度转换为百度地图经纬度
- TCP/IP协议十三:TTL
- Android性能优化之图片压缩综合解决方案