J'utilise la caméra PS3 avec opencv cela fonctionne avec le type de données PByte.Gives PByte comme résultat de trame.Dans les exemples de SDK ils utilisent IplImage.Je veux utiliser Mat à la place IplImage.But je ne peux pas convertir PByte en Mat. Comment puis-je convertir PByte en Mat? Exemple Dans SDKConvertir PByte en 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 // J'utilise 2 caméras.
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);
}
puis-je faire cela sans l'aide pCapImage. Je veux juste pCapBuffer à Mat directement. Parce que dans la documentation, je vois IplImage besoin de gestion de la mémoire manuel. – user1924375
@ user1924375 Ensuite, libérez juste la mémoire précédente. C'est facile. Veuillez vérifier la réponse mise à jour. – herohuyongtao