У меня был отлично работающий код OpenCV (с функцией cvCaptureFromCAM(0)
). Но когда я изменил его для запуска в отдельном потоке, я получаю это диалоговое окно выбора «Источник видео» , и он просит меня выбрать веб-камеру. Хотя я выбираю камеру, похоже, что функция cvCaptureFromCAM(0)
возвращает ноль. Я также попытался передать значения 0, -1,1, CV_CAP_ANY
этой функции. У меня есть сомнения, что это диалоговое окно вызывает эту проблему. Есть ли способ избежать этого или у кого-то есть другое мнение?
Я следил за следующими сообщениями при отладке:
cvCreateCameraCapture возвращает ноль
OpenCV cvCaptureFromCAM возвращает ноль
EDIT
Структура кода
//header includes
CvCapture* capture =NULL;
IplImage* frame = NULL;
int main(int argc, char** argv){
DWORD qThreadID;
HANDLE ocvThread = CreateThread(0,0,startOCV, NULL,0, &qThreadID);
initGL(argc, argv);
glutMainLoop();
CloseHandle(ocvThread);
return 0;
}
void initGL(int argc, char** argv){
//Initialize GLUT
//Create the window
//etc
}
DWORD WINAPI startOCV(LPVOID vpParam){
//capture = cvCaptureFromCAM(0); //0 // CV_CAP_ANY
if ((capture = cvCaptureFromCAM(1)) == NULL){ // same as simply using assert(capture)
cerr << "!!! ERROR: vCaptureFromCAM No camera found\n";
return -1;
}
frame = cvQueryFrame(capture);
}
//other GL functions
Спасибо.