我对OpenCV很陌生,我正试图通过查看和运行示例代码来了解我的方向。
我正在查看的一个示例程序是用于显示网络摄像头视频的程序。以下是重要的部分(程序执行不比此更远):
// Make frame.
CvCapture* capture = cvCaptureFromCAM(0);
if(!capture) {
printf("Webcam not initialized....");
}
// Display video in frame.
不幸的是,if
语句总是执行。出于某种原因,capture
未初始化。
更奇怪的是,当我运行程序时,它甚至给我一个GUI来选择我想要使用的网络摄像头:
但是,即使我选择了网络摄像头,capture
也未初始化!
这是什么意思?我该如何解决这个问题?
感谢您的任何建议。
答案 0 :(得分:1)
OpenCV可能无法在您选择之前访问网络摄像头。在这种情况下,尝试循环直到网络摄像头可用:
CvCapture *capture = NULL;
do {
// you could also try passing in CV_CAP_ANY or -1 instead of 0
capture = cvCaptureFromCAM(0);
} while (!capture);
如果仍然无效,请致电cvErrorStr(cvGetErrStatus())
以获取解释错误的字符串。