首页 > 解决方案 > 如何将表格 [xmin ymin xmax ymax] 转换为图像中标准化的 [xy width height]?

问题描述

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

我正在使用本教程

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

我有一个 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 坐标。

谁能给我一个转换功能?

标签: pythonobject-detectionmicrosoft-custom-vision

解决方案


假设 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

这假定原点为左上角,如果不是这种情况,您将必须应用移位因子。


推荐阅读