Не могу получить живое видео с uEye и OpenCV
Я использую камеру IDS, и я хотел бы сделать некоторую обработку видео, но я не могу получить видео в прямом эфире. Я использую QtCreator (C++) с OpenCV и uEye, проблема в том, что я получаю ошибки сомов.
Вот мой код:
// camera initialization
int returnedStatus = is_InitCamera(&hCam, NULL);
cout<<"Status Init: "<<returnedStatus<<endl;
// set image size
int imgWidth=792, imgHeight=480;
char *capturedImage = NULL;
int memoryId = 0;
// allocate memory for image capturing
returnedStatus = is_AllocImageMem(hCam, imgWidth, imgHeight, 24, &capturedImage, &memoryId);
cout<<"Status AllocImage: "<<returnedStatus<<endl;
returnedStatus = is_SetImageMem(hCam, capturedImage, memoryId);
cout<<"Status SetImageMem: "<<returnedStatus<<endl;
for(;;){
// capture frame
is_CaptureVideo(hCam, IS_DONT_WAIT);
IplImage* tmpImg;
tmpImg = cvCreateImageHeader(cvSize(imgWidth, imgHeight), IPL_DEPTH_8U, 3);
// tmpImg = cvCreateImage(cvSize(imgWidth,imgHeight),CV_8UC3,3);
tmpImg->imageData = capturedImage;
cv::Mat mat_img;//(imgWidth, imgHeight,3);
// To IplImage
IplImage ipltemp=mat_img;
cvCopy(&ipltemp,tmpImg);
// display captured image
cv::imshow( "Display window", mat_img);
cv::waitKey(0);
}
Ошибка:
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.0.1-dev) /home/sabrina/Téléchargements/opencv-master/modules/core/src/matrix_c.cpp:185: error: (-5:Bad argument) Unknown array type in function 'cvarrToMat'
Пожалуйста, помогите мне решить эту проблему.
Итак, я исправил первую проблему с этим кодом:
if (is_CaptureVideo (hCam, IS_DONT_WAIT) == IS_SUCCESS) {
is_RenderBitmap (hCam, memoryId, hnwd, IS_RENDER_FIT_TO_WINDOW);
}
}
cv::Mat retmat(imgWidth, imgHeight,CV_8UC3,3);
cv::imshow("test", retmat); ```
`
But now, it gives me a black image, not a live video. PLEASE, help
1 ответ
Вам нужно установить данные для cv::Mat:
cv::Mat retmat(imgWidth, imgHeight, CV_8UC3, capturedImage);