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

时间:2019-12-23 07:42:32

标签: python yolo

如何将yolov3面片坐标数组转换为边界框数组? 我有很多yolo补丁坐标数组看起来像这样:(0,a,b,c,d)其中0 <(a,b,c,d)<1并且我有每个此类数组引用的图像,所以我可以提取图像大小(h,w,3)。 我如何获取修补程序位置边界框数组(x1,y1,x2,y2),其中(x1,y1,左上角)和(x2,y2,右下角)

yolo_list=(0,a,b,c,d)
image_size=(h,w,3)
bounding_box_list=(x1,y1,x2,y2)

2 个答案:

答案 0 :(得分: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)。对您的其余部分执行此操作,您将获得理想的结果。

答案 1 :(得分: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)