如何在OpenCV中使用矩形中的标准化坐标

我正在通过Python SDK使用Microsoft Custom Vision服务进行对象检测。我能够做出预测,并且我正在尝试使用预测返回的边界框信息,使用OpenCV在图像上覆盖一个矩形。

但是,我不确定如何准确地计算从自定义视觉服务返回到OpenCV rectangle函数接受的点顶点的标准化坐标。

下面是作为边界框返回的服务的示例:

{'left': 0.146396145,
 'top': 0.0305180848,
 'width': 0.373975337,
 'height': 0.570280433}

目前,我正在进行下面的计算。xy的值看起来是正确计算的,但是我不确定如何计算第二个顶点。图像形状的大小已调整为(400, 400)

for pred in predictions:
    x = int(pred.bounding_box.left * img.shape[0])
    y = int(pred.bounding_box.top * img.shape[1])

    width = int(pred.bounding_box.width * img.shape[0])
    height = int(pred.bounding_box.height * img.shape[1])

    img = cv2.rectangle(img, (x,y), (width,height), (0,0,255), 2)

下面是上面代码的结果图像:

?

第一个长方体看起来走得还不够远,而第二个长方体看起来产生了一个矩形,方向与它应该走的方向相反。

有谁知道如何从归一化坐标中正确地计算出这些值?

转载请注明出处:http://www.kldfzc.com/article/20230526/1438230.html