我正在win 7 64位电脑上使用OpenCV 2.2和visual studio 2010。我能够显示图片和播放AVI文件,如《学习OpenCV》一书中所述,但我无法捕获摄像头图像。即使是OpenCV文件附带的示例也无法访问摄像头。
当我选择"视频源->捕获源"时,会出现两个选项:HP webcam Splitter和HP webcam。如果我选择HP webcam,则窗口会立即关闭而不显示任何错误。(我认为任何错误消息在关闭之前都太快了,无法看到)。如果我选择HP Webcam splitter,则应该显示网络摄像头图像(视频)的新窗口会被填充成统一的灰色。网络摄像头的指示灯亮着,但没有视频画面。我的网络摄像头在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;
}
我收到的错误信息是:
warning: Error opening file (C:\Users\vp\work\ocv\opencv\modules\highgui\src\cap
_ffmpeg.cpp:454)
Error opening camera!
我不知道这个“cap_ffmpeg.cpp”是什么,也不知道这是否与烦人的“HP Media Smart”有关。
非常感谢您的帮助。