如何从图像中的对象获取归一化坐标

How can I get normalized coordinated from an object in images

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

我正在使用这个教程: https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/csharp-tutorial-od

有一次我需要:

When you tag images in object detection projects, you need to specify the region of each tagged object using normalized coordinates

为此,我需要编写以下代码:

Dictionary<string, double[]> fileToRegionMap = new Dictionary<string, double[]>() {
// FileName, Left, Top, Width, Height
{"scissors_1", new double[] { 0.4007353, 0.194068655, 0.259803921, 0.6617647 } },
{"scissors_2", new double[] { 0.426470578, 0.185898721, 0.172794119, 0.5539216 } },
{"scissors_3", new double[] { 0.289215684, 0.259428144, 0.403186262, 0.421568632 } }
...

其中 double 是对象在图像内的归一化坐标。

如何从图像中获取这些坐标?有没有我可以用来创建这些坐标并将它们添加到代码中的软件?

归一化坐标是范围从 0.0 到 1.0(不含)的坐标。

如果您的图像坐标在

范围内
(X = 0..Width, Y = 0..Height)

变换坐标
double x_normalized = X / Width;
double y_normalized = Y / Height;

这假设坐标 XYWidthHeight 给出为 doublefloat。如果它们以 int 形式给出,请使用

double x_normalized = (double)X / Width;
double y_normalized = (double)Y / Height;

同样适用于图像内对象的宽度或高度

double object_width_normalized = object_width / Width;
double object_height_normalized = object_height / Height;

注意,如果给定的坐标为int,通常它们在[0..Width - 1, 0..Height - 1范围内,所以除法得到一个值0.0 <= value < 1.0