我在 Emgu.CV C# 中编写了以下用于对象检测的代码:
Image<Bgr, byte> image1 = new Image<Bgr, byte>("testing.png"); int interception = 0; Net netcfg = DnnInvoke.ReadNetFromTensorflow(Directory.GetCurrentDirectory() + @"pbs\t1.pb", Directory.GetCurrentDirectory() + @"pbs\graph.pbtxt"); netcfg.SetInput(DnnInvoke.BlobFromImage(image1.Mat, 1, new System.Drawing.Size(300, 300), default(MCvScalar), true, false)); Mat mat = netcfg.Forward(); var arr = mat.Data;
然而,当我在 Visual Studio 2019 中调试代码时,我发现 mat.Data 是 System.Array float[,,,],但当我将这个值赋给一个变量时,它总是 null。所以,在调试模式下我能看到 mat.Data 中有一个巨大的 float[,,,] 数组,但在之后,变量 arr 总是 null…请问,我该如何将 mat.Data 中的数组复制到另一个变量中呢?
回答:
抱歉,这真是一个愚蠢的问题…要从 mat.Data 中获取 float[,,,] 数组,我不应该这样使用:
var arr = mat.Data;
正确的做法是使用:
var arr = mat.GetData();