这就是问题所在。我们当前将托管内存分配为byte []。使用GCAlloc,我们将这个数组固定下来。作为其中的一部分,我们必须将我们传递的指针对齐到4K边界上的设备驱动器。设备驱动程序读取数据并存入此阵列。然后我们从那里开始处理。我想使用一些EmguCV SDK,因为这是一个WPF应用程序。
我无法弄清楚如何将这些数据放入Mat或CvArray或其他可以访问它的对象中。谁能让我知道如何将这个固定数据放入EmguCV / OpenCV对象进行进一步处理?
谢谢, 道格
答案 0 :(得分:0)
事实证明这并不是那么糟糕。我在挖掘一些旧的电子邮件时遇到了这个问题:
*如果帧在内存中并且您有指针,则可以直接创建指向特定内存的Mat标头。它非常高效,不需要内存复制。如果您的内存指针指向BGR颜色空间中的数据,并且每个像素以3个字节表示,则执行:
Mat m = new Mat(imageSize, DepthType.Cv8U, 3, handler.AddrOfPinnedObject(), step);
你将拥有一个与非托管代码共享数据的Emgu CV Mat。*
希望这会帮助其他人。
道格