原理


代码

# -*- coding: utf-8 -*-
"""
@File    : convert_tf-predict2yolo.py
@Time    : 2020/2/13 15:57
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
# -*- coding: utf-8 -*-
"""
@File    : convert_tf-predict2yolo.py
@Time    : 2020/2/13 15:57
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
import re# 流程:按文件名依次读取内容(像读取yolo标注那样读取)--> 提取坐标--> 将坐标转换成yolo格式--> 写入目标文件# 转换参数
# 图像分辨率(如果图片分辨率不一样的话就需要重写了aha)
img_width, img_height = 1280, 720
# 文件数量
file_num = 4670
# 类号(只有一类的情况)
class_num = '0'def extract_content(content):return re.findall('(.*?) (.*?) (.*?) (.*?) (.*?) (.*?)\n', content)if __name__ == '__main__':# 以下三个路径是相对当前文件的source_txt_path = './source_txt_path/'target_txt_path = './target_txt_path/'# 逐个打开文件处理for i in range(file_num):with open('{}{}.txt'.format(source_txt_path, i), 'r', encoding='utf-8') as file_read:# print(f.read())# object 0.6160 237 116 402 256# object 0.5585 655 21 807 152# object 0.3669 513 317 658 447# object 0.3459 418 484 590 629# ...# 读取文件内容content = file_read.read()# print(content)# object 0.6160 237 116 402 256# object 0.5585 655 21 807 152# object 0.3669 513 317 658 447# object 0.3459 418 484 590 629# ...# 提取数据content_extract = extract_content(content)# print(content_extract)# [('object', '0.6160', '237', '116', '402', '256'), ('object', '0.5585', '655', '21', '807', '152'),# ('object', '0.3669', '513', '317', '658', '447'), ('object', '0.3459', '418', '484', '590', '629')] # ...# 创建单文件写入字符串对象obj_strs = ''# 将数据格式从绝对坐标转换为相对坐标for obj_str in content_extract:# print(obj_str)# ('object', '0.6160', '237', '116', '402', '256')# ('object', '0.5585', '655', '21', '807', '152')# ('object', '0.3669', '513', '317', '658', '447')# ('object', '0.3459', '418', '484', '590', '629')# ('object', '0.5679', '452', '221', '621', '371')# ...# object_evar = list(map(eval, obj_str))# print(object_evar)# [<class 'object'>, 0.616, 237, 116, 402, 256]# [<class 'object'>, 0.5585, 655, 21, 807, 152]# [<class 'object'>, 0.3669, 513, 317, 658, 447]# ...# 去掉前俩个(类名和置信度)obj_str = obj_str[2:]# print(obj_str)# ('237', '116', '402', '256')# ('655', '21', '807', '152')# ('513', '317', '658', '447')# ...# 将元组字符串转换成列表数字object_evar = list(map(eval, obj_str))# print(object_evar)# [237, 116, 402, 256]# [655, 21, 807, 152]# [513, 317, 658, 447]# ...# 映射变量a1, b1, a2, b2 = object_evar[0], object_evar[1], object_evar[2], object_evar[3]c1, c2, d1, d2 = (a1 + a2) / (2 * img_width), (b1 + b2) / (2 * img_height), (a2 - a1) / img_width, (b2 - b1) / img_height# print(c1, c2, d1, d2)# 将映射变量格式化后加入到obj_strs中:# 用“+”连接字符串不建议使用,占用内存较大;建议使用join()方法,用''将可迭代字符串连接起来# obj_strs = obj_strs + class_num + (' {:.6f} {:.6f} {:.6f} {:.6f}\n'.format(c1, c2, d1, d2))obj_strs = ''.join([obj_strs, class_num, ' {:.6f} {:.6f} {:.6f} {:.6f}\n'.format(c1, c2, d1, d2)])print(obj_strs)# 将即将写入的内容去除首位的无效字符(如空格,换行符,制表符,回车符)obj_strs = obj_strs.strip()# 将内容写入文件with open('{}{}.txt'.format(target_txt_path, i + 1), 'w', encoding='utf-8') as file_write:file_write.write(obj_strs)





参考文章:如何将yolo的标注(annotations).txt 坐标转换成tensorflow-yolov3(YunYang1994)的.txt 标注坐标?

如何将tensorflow-yolov3(YunYang1994).txt 坐标转换成yolo的标注(annotations)相关推荐

  1. 如何将yolo的标注(annotations).txt 坐标转换成tensorflow-yolov3(YunYang1994)的.txt 标注坐标?

    文章目录 原理 示例 实现代码 实际操作方法 原理 示例 如,这是Yolo的: 转换后就变成酱紫了: 注意:图像坐标原点在左上角 注意:作者引用图片路径时使用的时绝对路径,我们使用相对路径不知是否会出 ...

  2. tensorflow yolov3训练自己的数据集,详细教程

    这个教程是我在自己学习的过程中写的,当作一个笔记,写的比较详细 在github上下载yolov3的tensorflow1.0版本: https://github.com/YunYang1994/ten ...

  3. 墨卡托坐标转换成经纬度

    为什么80%的码农都做不了架构师?>>>    /*** 墨卡托坐标转换成经纬度* @param {Object} mx* @param {Object} my*/ function ...

  4. 2000坐标转换成经纬度_ArcGIS中的坐标问题快问快答

    1.我国常用的地理坐标系有哪些? (1)北京54坐标系(参心) 椭球体:Krasovsky (2)西安80坐标系(参心)椭球体:IAG (3)WGS84坐标系(地心)椭球体:WGS84 (4)大地20 ...

  5. cad设计院常用字体_如何把CAD图纸坐标转换成现场坐标?

    使用CAD软件画建筑施工图是很常见的,特别是在施工现场,为了不受现场场地落差的影响,需要使用全站仪,但是使用全站仪需要把CAD图纸转换成CAD坐标,很多人可能并不知道该怎么转换,下面我们就来介绍一下如 ...

  6. python合并txt文本_Python实现将目录中TXT合并成一个大TXT文件的方法

    本文实例讲述了Python实现将目录中TXT合并成一个大TXT文件的方法.分享给大家供大家参考.具体如下: 在网上下了一个dota的英雄攻略,TXT格式,每个英雄一个文件,看得疼,就写了一个小东西,合 ...

  7. shell 实现txt转换成html

    原理: awk命令,分割格式化的txt(txt文件格式以"|"分割开的)成数组,然后拼接成html格式(html - head - title - body - table) sh ...

  8. c# txt代码转换成HTML格式

    /// <summary>/// 字符串字符处理/// </summary>/// <param name="chr">等待处理的字符串< ...

  9. 将文字或txt转换成GBK或者UTF8编码

    将文字或txt转换成GBK或者UTF8编码 用到的工具 Sublime Text 3 点击下载 安装好后 打开界面输入ctrl+shift+p键 界面弹出输入框 输入install package 回 ...

最新文章

  1. linux系统安装后优化
  2. 基于Ubuntu Hadoop的群集搭建Hive
  3. HYSBZ - 1026 windy数(数位dp)
  4. python从基础到入门电子书_零基础如何学好python?一本python从入门到实践电子书籍赠送...
  5. python界面开发webview_Python+Appium学习篇之WebView处理
  6. flightgear通过UDP协议输出飞行态势数据以及利用C++接收flightgear数据
  7. Python爬取京东图书销量榜
  8. TC8:IPv4_REASSEMBLY_01-13
  9. windows10专业版安装详细教程
  10. 流程追踪_徐川江的博客_新浪博客
  11. 【Pandas学习笔记Task05】:变形
  12. Python 手机端自动推送功能(利用极光推送API)
  13. 【GAMES101】课堂笔记1--计算机图形学概述
  14. css 中划线,原价样式
  15. 《袁老师访谈录》第十一期|宗福季教授/香港科大(广州)信息枢纽署理院长【问诊未来·院长系列:拥抱数字化转型】...
  16. unity3d英语单词拼写小游戏Pics Quiz Maker With Categories 3.0
  17. windows terminal ssh连接
  18. 计算机网络及多媒体知识,计算机基础知识:多媒体的基本概念及关键技术
  19. 3D打印的材料有哪几种?
  20. 最大公约数、最小公倍数算法思想

热门文章

  1. 搭建简易Linux局网服务器
  2. 如何id变动自动保存html软件,Wordpress折腾小记:彻底解决ID不连续的问题-自动保存、自动修订 | 地瓜哥博客网...
  3. 【实用】CTS请求号传输报错处理
  4. 【QM-02】Master Data (QM主数据的设置)
  5. SAP 与 JSON 接口实施案例一
  6. 【PP生产订单】入门介绍(八)
  7. 使用js实现时钟效果
  8. SAP ABAP 特性相关表取数逻辑
  9. 360浏览器的收藏栏不见了怎么办?
  10. sap知识-MPS和MRP的区别