Создайте Mat из PvBuffer в C#, используя eBUS SDK и EmguCV

Я использую EmguCV 3.4.1 и eBUS SDK. У меня есть видео по GigE, и я хотел бы преобразовать PvBuffer в MAT, чтобы я мог использовать OpenCV для отображения гистограммы.

1 ответ

Решение

Я придерживался стиля, аналогичного тому, как вы создали Mat в C++. К сожалению, это решение требует пометить проект как небезопасный.

    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-битные изображения в оттенках серого.

Другие вопросы по тегам