1

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

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

在某一时刻,我需要:

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

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

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 是对象在图像内的归一化坐标。

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

4

1 回答 1

0

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

如果您有一个坐标在范围内的图像

(X = 0..Width, Y = 0..Height)

变换坐标

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

这假设坐标XorYWidthorHeight被给出为doubleor float。如果它们被指定为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

于 2019-05-03T13:35:28.860 回答