Я использую камеру PS3 с opencv, она работает с типом данных PByte. Дает PByte в качестве результата кадра. В образцах SDK они используют IplImage. Я хочу использовать Mat вместо IplImage. Но я не могу преобразовать PByte в Mat. Как я могу преобразовать PByte в Mat? Пример В SDKПреобразование PByte в Mat OpenCV
IplImage *pCapImage;
PBYTE pCapBuffer = NULL;
cvGetImageRawData(pCapImage, &pCapBuffer);
while(_running)
{
cvGetImageRawData(pCapImage, &pCapBuffer);
CLEyeCameraGetFrame(_cam, pCapBuffer, (i==0)?2000:0);
}
//Function from SDK
IMPORT(bool) CLEyeCameraGetFrame(CLEyeCameraInstance cam, PBYTE pData, int waitTimeout = 2000);
// MyCode // Я использую 2 камеры.
cv::Mat pCapImage[2];
PBYTE pCapBuffer = NULL;
while(_running){
for (int i = 0; i < 2; i++)
{
//trying convert
pCapImage[i] = cv::Mat (cvSize(w, h), 4, &pCapBuffer,IPL_DEPTH_8U).clone();
CLEyeCameraGetFrame(_cam[i], pCapBuffer);
}
Mat pCapImageMatL = pCapImage[0];
Mat pCapImageMatR = pCapImage[1];
imshow(_windowNameL, pCapImageMatL);
imshow(_windowNameR, pCapImageMatR);
}
я могу сделать это без использования pCapImage. Я просто хочу, чтобы pCapBuffer попал в Mat напрямую. Потому что в документации я вижу, что IplImage нуждается в управлении памятью manuel. – user1924375
@ user1924375 Затем просто отпустите предыдущую память. Это просто. Проверьте обновленный ответ. – herohuyongtao