如何将图像中标准化的形式[xmin ymin xmax ymax]转换为[x y width height]?

时间:2019-07-11 08:43:25

标签: python object-detection microsoft-custom-vision

我正在使用Microsoft的CustomVision.ai构建自定义视觉应用程序。

我正在使用this tutorial

在对象检测项目中标记图像时,需要使用归一化坐标指定每个标记对象的区域。

我有一个XML文件,其中包含有关图片的注释,例如名为sample_1.jpg

<annotation>
        <filename>sample_1.jpg</filename>
    <size>
        <width>410</width>
        <height>400</height>
        <depth>3</depth>
    </size>
    <object>
        <bndbox>
            <xmin>159</xmin>
            <ymin>15</ymin>
            <xmax>396</xmax>
            <ymax>302</ymax>
        </bndbox>
    </object>
</annotation>

我必须将边界框坐标从xmin,xmax,ymin,ymax转换为根据提供的教程标准化的x,y,w,h坐标。

有人可以给我提供转换功能吗?

1 个答案:

答案 0 :(得分:1)

假设x / ymin和x / ymax是您的边界角,分别为左上和右下。然后:

x = xmin
y = ymin
w = xmax - xmin
h = ymax - ymin

然后您需要对它们进行归一化,这意味着将它们作为整个图像的一部分,因此可以简单地将每个值除以其各自的大小,然后从上面的值中除掉

x = xmin / width
y = ymin / height
w = (xmax - xmin) / width
h = (ymax - ymin) / height

这是假设左上角的原点,如果不是这种情况,则必须应用移位因子。