YOLO数据格式说明与转换

文章目录[隐藏]

1. YOLO数据格式说明

  • yolo标注格式保存在.txt文件中,一共5个数据,用空格隔开,举例说明如下图所示:
    在这里插入图片描述

假设图像的高和宽分别为h, w,bbox的左上角坐标为(x1, y2),右下角坐标为(x2, y2),则可求得bbox中心坐标(x_c, y_c)为:

x_c = x1 + (x2 - x1)/2 = (x1 + x2)/2
y_c = y1 + (y2 - y1)/2 = (y1 + y2)/2

假设yolo的5个数据分别为:label, x_, y_, w_, h_,则有对应关系:

x_ = (x1 + x2) / 2w
y_ = (y1 + y2) / 2h
w_ = (x2 - x1) / w
h_ = (y2 - y1) / h

反过来,则有:

x1 = w * x_ - 0.5 * w * w_
x2 = w * x_ + 0.5 * w * w_
y1 = h * y_ - 0.5 * h * h_
y2 = h * y_ + 0.5* h * h_

2. 代码

import cv2

# 假设图像为test.jpg
img = cv2.imread('test.jpg')
h, w, _ = img.shape


# yolo标注数据文件名为786_rgb_0616.txt
with open('786_rgb_0616.txt', 'r') as f:
	temp = f.read()
	temp = temp.split()
	# ['1', '0.43906', '0.52083', '0.34687', '0.15']

# 根据第1部分公式进行转换
x_, y_, w_, h_ = eval(temp[1]), eval(temp[2]), eval(temp[3]), eval(temp[4])

x1 = w * x_ - 0.5 * w * w_
x2 = w * x_ + 0.5 * w * w_
y1 = h * y_ - 0.5 * h * h_
y2 = h * y_ + 0.5* h * h_

# 画图验证,注意画图坐标要转换成int格式
cv2.rectangle(img, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0))

cv2.imshow('windows', img)
cv2.waitKey(0)

返回结果如下图所示,可以看到正确框选出了目标,验证正确。

在这里插入图片描述

结束。

版权声明:本文为CSDN博主「lokvke」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43508499/article/details/118600392

lokvke

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

使用 YOLO v5 进行目标检测

使用样本数据集检测对象的步骤 一般来说,分类技术在自动驾驶汽车中没有多大帮助,因为它只预测图像中的一个对象,并且不给出该图像的位置。 而目标检测在自动驾驶汽车中非常重要,可以检测场景中的

【经典论文解读】YOLOv4 目标检测

前言 YOLO是一种目标检测方法,它的输入是整张图片,输出是n个物体的检测信息,可以识别出图中的物体的类别和位置。YOLOv4是在YOLOv3的基础上增加了很多实用的技巧,使得速度与精度

目标检测YOLO系列------YOLO简介

YOLO以及各种变体已经广泛应用于目标检测算法所涉及到的方方面面,为了梳理YOLO系列算法建立YOLO系列专题,按照自己的理解讲解YOLO中的知识点和自己的一些思考。本文是开篇之作,首先简单介绍一下YO