使用 eBUS SDK 和 EmguCV 在 C# 中从 PvBuffer 创建垫

Create a Mat from a PvBuffer in C# using eBUS SDK and EmguCV

我正在使用 EmguCV 3.4.1 和 eBUS SDK。我有通过 GigE 传输的视频,我想将 PvBuffer 转换为 MAT,这样我就可以使用 OpenCV 创建显示直方图。

我遵循了与您如何在 C++ 中创建 Mat 类似的风格。不幸的是,此解决方案需要将项目标记为不安全。

    unsafe private Mat convertPvBufferToMat(PvBuffer aBuffer)
    {
        PvImage lImage = aBuffer.Image;
        lImage.Alloc(lImage.Width, lImage.Height, PvPixelType.Mono16);
        int[] sizes = new int[2] { (int)lImage.Height, (int)lImage.Width };
        Mat aMat = new Mat(sizes, DepthType.Cv16U, (IntPtr)lImage.DataPointer);

        return aMat;
    }

我正在从输出 16 位灰度图像的红外相机拍摄图像。