LabelImg标注的YOLO格式txt标签中心坐标和物体边界框长宽的转换

news2024/11/18 9:44:38

目录

1.LabelImg标注的YOLO格式的TXT标签


Opencv+YOLO-V3实现目标跟踪

YOLO-V3实时检测实现(opencv+python实现)——改进——>更加的易懂

YOLO-V3实时检测实现(opencv+python实现)

1.LabelImg标注的YOLO格式的TXT标签

关于LabelImg下载及使用:标注工具 labelImg 的下载安装及使用

首先标注一张图片:

查看标签.txt文件:

 

提示:如果我们要进行训练的话,那么需要上面的坐标进行变换一下,得到框的左上角的坐标和右下角的坐标。

  

现在我们要根据中心坐标和边框得到左上角(xmin,ymin)和右下角(xmax,ymax)坐标:

变换公式如下:

提示:现在已经知道坐标之间的关系了,那么可以使用python进行求解:

  • 第一步从标注的.txt文件中读取数据;
  • 第二步将读取的数据利用上面的公式进行转换;
def Xmin_Xmax_Ymin_Ymax():
    img_path = "data/train/000_0.png"
    txt_path = "data/XML/000_0.txt"
    img = cv2.imread(img_path)
    # 获取图片的高宽
    h, w, _ = img.shape
    txt_path="data/XML/000_0.txt"
    #读取TXT文件 中的中心坐标和框大小
    with open(txt_path,"r") as fp:
        #以空格划分
        contline=fp.readline().split(' ')
        #contline : class  x_center y_center width height
        print(contline)
    #计算框的左上角坐标和右下角坐标,使用strip将首尾空格去掉
    xmin=float((contline[1]).strip())-float(contline[3].strip())/2
    xmax=float(contline[1].strip())+float(contline[3].strip())/2

    ymin = float(contline[2].strip()) - float(contline[4].strip()) / 2
    ymax = float(contline[2].strip()) + float(contline[4].strip()) / 2

    #将坐标(0-1之间的值)还原回在图片中实际的坐标位置
    xmin,xmax=w*xmin,w*xmax
    ymin,ymax=h*ymin,h*ymax

    return (xmin,xmax,ymin,ymax)

将返回的坐标利用opencv将框绘制出来:

def draw(tupelist):
    img_path = "data/train/000_0.png"
    img = cv2.imread(img_path)

    xmin=tupelist[0]
    xmax=tupelist[1]
    ymin=tupelist[2]
    ymax=tupelist[3]
    cv2.rectangle(img,(int(xmin),int(ymin)),(int(xmax),int(ymax)),(255,0,255),2)

    cv2.imshow('img',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
import cv2
import os
import numpy as np


if __name__ == '__main__':
    tuplelist=Xmin_Xmax_Ymin_Ymax()
    draw(tuplelist)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Mysql】记录一些特殊的select语句

目录一.分页查询二.多表查询三.自连接四.子查询4.1单行子查询4.2多行子查询4.3临时表子查询4.4多行子查询4.5多列子查询一.分页查询 select...limit start,rows 表示从start1行开始取,取出rows行,start从0开始算 公式:limit 每页显示记录数*…

R语言NLP案例:LDA主题文本挖掘优惠券推荐网站数据

介绍 Groupon是一个优惠券推荐服务,您可以免费注册Groupon,并且Groupon每天都会向您发送包含该地区当天交易的电子邮件。如果您喜欢这笔交易,那么您可以立即从Groupon购买,并在餐馆/商店兑换。 相关视频:文本挖掘&…

微导纳米将于12月14日申购:前三季度收入约4亿元,同比增长67%

12月5日,江苏微导纳米科技股份有限公司(下称“微导纳米”,SH:688147)披露招股意向书,启动发行招股,初步询价时间定于2022年12月9日,将于2022年12月14日申购。 据了解,微导纳米拟在上…

电巢·新能源领域高速发展,驱动电解电容“老树又发新枝芽”

据统计,新能源汽车销量2012年为1.3万台,2021年上升到352.1万台,截止2022年9月达到456.7万台。车载充电机(OBC)的主要功能是将交流电压输入,以适合电池组的电流和电压水平,转换为直流电压输出。 新能源汽车应用中&#…

Apache Spark与 Apache Hadoop数据科学工具有哪些区别?

ApacheSpark与 Apache Hadoop数据科学工具有哪些区别?Apache Spark被设计为大规模处理的接口,而 Apache Hadoop 为大数据的分布式存储和处理提供了更广泛的软件框架。两者既可以一起使用也可以作为独立服务使用。Apache Spark 和 Apache Hadoop 都是 Apa…

C51 - 微型步进电机15BY25驱动

Contents1> 电机1.1> 旋转原理1.2> 拍数1.3> 步距角2> 驱动电路2.1> MS356562.2> L62192.3> TC15083> 工作时序1> 单相4拍2> 双相4拍3> 双相8拍1> 电机 1.1> 旋转原理 电生磁, 安培定则(右手螺旋定则); 步进电机转动的本质: 转子被定…

【U8】T6升级U8后打开卡片管理报错

T6升级U8,使用低版本升级U8工具,严格按照升级工具步骤操作(以下三个步骤按顺序操作) 升级成功后,在U8中,打开固定资产模块的卡片管理报错,如下图: 经过跟踪排查发现,后台…

ChatGPT 加图数据库 NebulaGraph 预测 2022 世界杯冠军球队

一次利用 ChatGPT 给出数据抓取代码,借助 NebulaGraph 图数据库与图算法预测体坛赛事的尝试。 作者:古思为 蹭 ChatGPT 热度 最近因为世界杯正在进行,我受到这篇 Cambridge Intelligence 的文章启发(在这篇文章中,作…

【机器学习实战】使用SGD-随机梯度下降、随机森林对MNIST数据进行二分类(Jupyterbook)

1. 数据集 由美国高中生和人口调查局员工手写的70000个数字的图片。数据集获取 # 获取MNIST数据集 from sklearn.datasets import fetch_openml mnist fetch_openml(mnist_784, version1, cacheTrue, as_frameFalse) mnist查看X和Y 找索引为36000的实例,并将其还…

AXI4-Lite总线读写BRAM

博主参考和学习的博客 AXI协议基础知识 。这篇博客比较详细地介绍了AXI总线,并且罗列了所有的通道和端口,写代码的时候可以方便地进行查表。AXI总线,AXI_BRAM读写仿真测试 。 这篇文章为代码的书写提供大致的思路,比如状态机和时…

GDB调试

文章目录1.什么是GDB2. 准备工作3.GDB命令-启动、退出、查看代码4.设置断点5.GDB命令-调试命令1.什么是GDB 2. 准备工作 通常,在为调试而编译时,我们会关掉编译器的优化选项"-o",并打开调试选选项“-g”,另外,“-wall”…

【第一章 Linux目录结构,网络连接模式,vi和vim,Linux关机重启命令,Linux用户管理】

第一章 Linux目录结构,网络连接模式,vi和vim,Linux关机&重启命令,Linux用户管理 1.Linux和Unix: ①Unix针对于大型,高性能主机或服务器; ②Linux适用于个人计算机。 2.网络连接的三种模式…

图解pytorch里面的torch.gather()

在 Dim1 的情况下应用 torch.gather() 上图显示了 torch gather() 函数在 dim1 的二维张量上的工作。 这里索引张量的行对应于输入张量的行(用灰色阴影突出显示)。现在对于索引张量中的每个索引值,从该行和输入张量的索引中选取相应的值。 让…

LEADTOOLS 22-23 .Net/NetCore/JS/JAVA/Win/Linux

破解版功能齐全:LEADTOOLS 是一系列综合工具包,旨在帮助程序员将光栅、文档、医学、多媒体和矢量图像集成到他们的桌面、服务器、平板电脑和移动应用程序中。LEADTOOLS 为开发人员提供最灵活、最强大的成像技术,为 OCR、条形码、表单识别、PD…

推荐大家一些CTF的网站和工具

一.网站 1.攻防世界 网址:攻防世界 这是一个有好多题目的网站 主要有Misc、Pwn、Web、Reverse、Crypto、Mobile几种题型 不会的问题还可以查题解 好用度 9星 2.BUUCTF 网址:BUUCTF在线评测 也有很多ctf的题目 逆向、网络等等...... 比攻防世界…

最近火爆了的对话ChatGPT

前言 相信最近小伙伴们已经被ChatGPT的惊艳效果刷屏了,之前笔者也介绍过一些对话方向的工作,感兴趣的小伙伴可以穿梭: 对话系统最新综述II https://zhuanlan.zhihu.com/p/446760658 在对话系统中建模意图、情感: https://zhuanlan.zhihu.com/…

Nacos是什么?

摘要:Nacos是 Dynamic Naming and Configuration Service的首字母简称,相较之下,它更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。本文分享自华为云社区《Nacos入门指南 - Nacos是什么》,作者:华为云P…

.gitlab-ci.yml文件常用规则说明

我自己整理了一份yml文件,里面包含了分支触发,和tag触发,还有缓存等: stages:- install- build- deploycache:key: nodeModulespaths:- node_modules- distjob_install:stage: installtags:- cvtagsonly:refs:- devscript:- npm …

基于LLVM的Fortran编译器分析

简介 本文内容基于LLVM 13.0.0。 目前基于LLVM的Fortran编译器(或者驱动)有3种,分别是flang、f18和flang-new。 flang是pgfortran的开源版本,基于PGI/NVIDIA的商业Fortran 编译器,它并不从属于LLVM项目。NVIDIA团队…

LabVIEW编程LabVIEW开发 ADAM 4015热电阻输入模块例程与相关资料

LabVIEW编程LabVIEW开发 ADAM 4015热电阻输入模块例程与相关资料 ​研华公司的ADAM 4015是6通道热电阻输入模块,可以采集2线或3线热电阻输入信号,ADAM4015T课题采集热敏电阻的输入信号。模块在工业测量和监控的有着广泛的应用,它既可以支持A…