Создайте объект emguCV.Mat в C#
У меня есть камера flycapture, и я пытаюсь преобразовать полученное изображение в emguCV.Mat
(потому что я читал, что он лучше по производительности и управлению памятью, чем старый emguCV.Image<,>
)
Моя проблема в том, что в emguCV.Mat
Конструктор Мне нужно предоставить указатель на данные изображения, и я понятия не имею, как это сделать.
Моя лучшая догадка:
m_camera.RetrieveBuffer(m_rawImage);
m_rawImage.Convert(FlyCapPixelFormat.PixelFormatBgr, m_processedImage);
int rowBytes = Convert.ToInt16(
(double)m_processedImage.receivedDataSize / m_processedImage.rows);
emguCV.Mat testmat = new emguCV.Mat(
(int)m_processedImage.rows,
(int)m_processedImage.cols,
DepthType.Cv8U,
3,
(IntPtr)m_processedImage.GetRawNativeImagePointer(),
rowBytes);
Где оба m_rawImage
а также m_processedImage
являются FlyCapture2.Image
объекты. а также m_processedImage.GetRawNativeImagePointer()
возвращается void*
,
Строка с вызовом emguCV.Mat
конструктор дает мне следующую ошибку
Указатели и буферы фиксированного размера могут использоваться только в небезопасном контексте