python transform(img)_GitHub - ChenCongGit/RoLabelImg_Transform: 针对不同旋转矩形框标签格式的转换(txt和xml)...

RoLabelImg_Transform

该项目是针对行文本检测框标签(旋转矩形检测框)两种表示形式的转化(txt和xml)。

文本检测框

文本检测常用的标注形式有水平矩形框、旋转矩形框、任意四边形框、任意多边形框、其他形式(如文本蛇)等,如下图所示。

该项目针对其中文本检测使用最多的旋转矩形框表示形式进行读写,转化。旋转矩形框与常规的目标检测bounding box不同,在它的基础上添加了旋转角度,对常规水平检测框进行旋转。

旋转矩形框通常有两种表示形式:

中心点坐标、宽、高、旋转角度,常采用xml文件保存

矩形四个角点的坐标,通常直接使用txt文件简单保存(如ICDAR2015数据集)

中心-旋转角表示

以下面一个检测框为例:

robndbox

wenben

Unspecified

0

0

860.5666

734.5734

644.8657

52.3775

3.031593

xml文件保存了旋转检测框的类别(wenben)、中心点坐标(cx,cy)、宽高(w,h)、旋转角(angle)

矩形角点坐标表示

以下面一个检测框为例:

x1,y1,x2,y2,x3,y3,x4,y4,labelname

txt文件中的每一行都如上所示,x1,y1,x2,y2,x3,y3,x4,y4分别是四个角点的横纵坐标,labelname是检测框的类别

两种表示方式转换

具体计算公式如下:

x1 = cx-w/2*cos(theta)+h/2*sin(theta)

y1 = cy-h/2*cos(theta)-w/2*sin(theta)

x2 = cx-w/2*cos(theta)+h/2*sin(theta)

y2 = cy-h/2*cos(theta)+w/2*sin(theta)

x3 = cx+w/2*cos(theta)-h/2*sin(theta)

y3 = cy+h/2*cos(theta)-w/2*sin(theta)

x4 = cx+w/2*cos(theta)+h/2*sin(theta)

y4 = cy+h/2*cos(theta)+w/2*sin(theta)

其中theta与角度angle有关,当angle小于pi/2时,theta等于angle,当angle大于pi/2时,theta等于angle-pi。

代码程序

准备环境

该程序需要以下依赖包:

python3.6

opencv-python 4.1.0.25

lxml 4.4.0

txt转xml

将需要转换的图像文件放入img文件夹,txt检测框文件放入txt文件夹,运行get_list.py得到转换列表txt_to_xml_list.txt,然后运行txt_to_xml.py,在xml文件夹中得到同名的xml格式标签文件

python RoLabelImg_Transform/get_list.py --model='txt_to_xml' --input_path='./RoLabelImg_Transform/txt/'

python RoLabelImg_Transform/txt_to_xml.py

xml转txt

将需要转换的图像文件放入img文件夹,xml检测框文件放入xml文件夹,运行get_list.py得到转换列表xml_to_txt_list.txt,然后运行xml_to_txt.py,在txt文件夹中得到同名的txt格式标签文件

python RoLabelImg_Transform/get_list.py --model='xml_to_txt' --input_path='./RoLabelImg_Transform/xml/'

python RoLabelImg_Transform/xml_to_txt.py

txt检测框可视化

对txt文件检测框进行可视化,运行visualize.py文件,可视化后的图像保存在visualized_img文件夹中

python RoLabelImg_Transform/visualize.py

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值