无法使用OpenCV访问网络摄像头

Ast*_*az3 3 webcam opencv

我正在使用OpenCV 2.2和visual studio 2010在win 7 64 bit pc上.

我可以通过OpenCV显示图片和播放AVI文件,如"学习OpenCV"一书中所述,但我无法捕捉网络摄像头图像.即使与OpenCV文件一起提供的样本也无法访问网络摄像头.

我被问到"视频源 - >捕获源",有两种选择:HP webcam Splitter和HP网络摄像头.如果我选择HP网络摄像头,窗口会立即关闭而不会显示任何错误.(我认为任何错误信息都太快,无法在关闭之前看到).如果我选择HP Webcam splitter,那么网络摄像机图像(视频)应该出现的新窗口将填充均匀的灰色.网络摄像头LED亮起但没有看到视频.我的网络摄像头适用于flash(www.testmycam.com)和DirectShow http://www.codeproject.com/KB/audio-video/WebcamUsingDirectShowNET.aspx

我尝试使用以下方法获取一些错误消息:

#include "cv.h"
#include "highgui.h"
#include <iostream>
using namespace cv;
using namespace std;

int main(int, char**)
{
    VideoCapture cap("0"); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
       {
     cout << "Error opening camera!";
     getchar();
     return -1;
 }

    Mat edges;
    namedWindow("edges",1);
    for(;;)
    {
        Mat frame;
        cap >> frame; // get a new frame from camera
        cvtColor(frame, edges, CV_BGR2GRAY);
        GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
        Canny(edges, edges, 0, 30, 3);
        imshow("edges", edges);
        if(waitKey(30) >= 0) break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是:

warning: Error opening file (C:\Users\vp\work\ocv\opencv\modules\highgui\src\cap
_ffmpeg.cpp:454)
Error opening camera!
Run Code Online (Sandbox Code Playgroud)

我不知道这个"cap_ffmpeg.cpp"是什么,我不知道这是否与爱管闲事的"HP Media Smart"有什么关系.

任何帮助将不胜感激.

小智 12

我在Windows 7 64位上遇到了同样的问题.我必须重新编译opencv_highgui,在属性页面的C/C++面板中更改"Preprocesser Definitions",以包括:

HAVE_VIDEOINPUT HAVE_DSHOW

希望这可以帮助

  • 哦.我的.神.先生,你是我的英雄;)我用Google搜索了几天,降级为opencv 2.1,因为我几乎放弃了,我的所有代码都在OpenCv2.1下爆炸(blobslib遇到了奇怪的例外,在2.2下运行正常).跟着你的脚步,就像一个魅力.有很多人都有这个问题,如果你不介意,我会传播你的建议,如果可能的话,请参考这篇SO帖子. (2认同)