![](/img/trans.png)
[英]How to convert cv2.rectangle bounding box to YoloV4 annotation format (relative x,y,w,h)?
[英]How to convert 2D bounding box pixel coordinates (x, y, w, h) into relative coordinates (Yolo format)?
嗨! 我正在通过在线平台注释图像数据,该平台生成这样的输出坐标: bbox":{"top":634,"left":523,"height":103,"width":145}但是,我想使用此注释来训练 Yolo。所以,我必须将其转换为 yolo 格式,如下所示: 4 0.838021 0.605556 0.177083 0.237037
在这方面,我需要有关如何转换它的帮助。
在这里,对于需要传递 (w,h) 的大小和需要传递的框 (x,x+w, y, y+h) https://github.com/ivder/LabelMeYoloConverter/blob /master/convert.py
def convert(size, box):
dw = 1./size[0]
dh = 1./size[1]
x = (box[0] + box[1])/2.0
y = (box[2] + box[3])/2.0
w = box[1] - box[0]
h = box[3] - box[2]
x = x*dw
w = w*dw
y = y*dh
h = h*dh
return (x,y,w,h)
或者,您可以在下面使用
def convert(x,y,w,h):
dw = 1.0/w
dh = 1.0/h
x = (2*x+w)/2.0
y = (2*y+w)/2.0
x = x*dw
y = y*dh
w = w*dw
h = h*dh
return (x,y,w,h)
每个网格单元预测 B 个边界框以及 C 类概率。 边界框预测有 5 个分量:(x、y、w、h、置信度)。 (x, y) 坐标表示框的中心,相对于网格单元的位置(请记住,如果框的中心不在网格单元内,则该单元不对其负责)。 这些坐标被归一化为介于 0 和 1 之间。 (w, h) 框尺寸也被归一化为 [0, 1],相对于图像大小。 让我们看一个例子:
如果要将带有键top
、 left
、 widht
、 height
的 Python 字典转换为格式为 [ x1
, y1
, x2
, y2
] 的列表
其中x1
, y1
是相对坐标top left corner
边框和x2
, y2
是相对坐标bottom right corner
你可以用下面的函数边框:
def bbox_dict_to_list(bbox_dict, image_size):
h = bbox_dict.get('height')
l = bbox_dict.get('left')
t = bbox_dict.get('top')
w = bbox_dict.get('width')
img_w, img_h = image_size
x1 = l/img_w
y1 = t/img_h
x2 = (l+w)/img_w
y2 = (t+h)/img_h
return [x1, y1, x2, y2]
您必须将 bbox 字典作为参数传递,并将图像大小作为元组传递 -> (image_width, image_height)
例子
bbox = {"top":634,"left":523,"height":103,"width":145}
bbox_dict_to_list(bbox, (1280, 720))
>> [0.40859375, 0.8805555555, 0.521875, 1.02361111111]
您可以更改退货单以满足您的需求
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.