0

我对 OpenCV 很陌生,我试图通过查看和运行示例代码来了解我的方位。

我正在查看的示例程序之一是用于显示网络摄像头视频的程序。以下是重要的几行(程序不会执行得更远):

// Make frame.
CvCapture* capture = cvCaptureFromCAM(0);

if(!capture) {
    printf("Webcam not initialized....");
}
// Display video in frame.

不幸的是,该if语句总是执行。由于某种原因,capture没有初始化。

更奇怪的是,当我运行程序时,它甚至给了我一个 GUI 来选择我想使用的网络摄像头:

网络摄像头选择 GUI

但是,即使我选择了网络摄像头,capture也没有初始化!

这是什么意思?我该如何解决?

感谢您的任何建议。

4

1 回答 1

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())以获取解释错误的字符串。

于 2012-06-15T18:57:54.067 回答