【问题标题】:How can I get normalized coordinated from an object in images如何从图像中的对象获取归一化坐标
【发布时间】:2019-09-22 00:51:39
【问题描述】:

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

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

【问题讨论】:

标签: c# machine-learning artificial-intelligence object-recognition microsoft-custom-vision


【解决方案1】:

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

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

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

用坐标变换

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

这假定坐标XYWidthHeightdoublefloat 给出。如果它们被指定为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 &lt;= value &lt; 1.0

【讨论】:

  • 我将尝试构建一个控制台应用程序并进行转换作为测试。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-08-01
  • 2022-06-11
  • 2021-10-11
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 2017-11-26
相关资源
最近更新 更多