我正在使用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是图像内对象的规范化坐标。
如何从图像中获取这些坐标?有什么软件可以用来创建这些坐标并将其添加到代码中?
答案 0 :(得分:0)
归一化坐标是范围为0.0到1.0(不包括)的坐标。
如果您的图片坐标在范围内
(X = 0..Width, Y = 0..Height)
使用
变换坐标double x_normalized = X / Width;
double y_normalized = Y / Height;
这假设坐标X
或Y
或Width
或Height
都以double
或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
。