如何将yolov3面块坐标数组转换为边界框数组(x1,y1,x2,y2)

问题描述 投票:0回答:2

如何将yolov3面块坐标数组转换为边界框数组?我有很多yolo补丁坐标数组看起来像这样:(0,a,b,c,d)其中0

yolo_list=(0,a,b,c,d)
image_size=(h,w,3)
bounding_box_list=(x1,y1,x2,y2)
python yolo
2个回答
0
投票

您必须实现“归一化”的逆过程。

在您的情况下,如果像素属于(x1,y1)和(x2,y2),而您仅具有图像的高度和宽度,则可以轻松推断图像中的实际值/位置。

例如,如果x1 = 0.10并且y1 = 0.15,并且如果H = W = 512(例如),则您知道0.10 * 512 == 51.2,int(51.2)= 51,而y1 = 0.15 * 512 == 76,8,int(76.8)= 76。

因此,左上角的坐标为(51,76)。对您的其余部分执行此操作,您将获得理想的结果。


0
投票
x1 = int((a-c/2)*w)
y1 = int((b-d/2)*h)
x2 = int((a+c/2)*w)
y2 = int((b+d/2)*h)

其中

yolo_list=(0,a,b,c,d)
image_size=(h,w,3)
bounding_box_list=(x1,y1,x2,y2) 
© www.soinside.com 2019 - 2024. All rights reserved.