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