OpenCV摄像头捕捉问题

我已经安装了OpenCV 2.2,现在我无法使用网络摄像头捕捉工作。 它在2.1中运行正常。 OpenCV检测到网络摄像头,不报告任何错误或警告,但每帧都是灰色图像。 我甚至尝试了OpenCV wiki的代码示例:

VideoCapture cap(0); // open the default camera
if(!cap.isOpened())  // check if we succeeded
    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;

有没有人遇到过这个问题? 我正在使用64位Win7和Visual Studio 2010。


我经过很长时间的搜索后找到了解决方案。

问题是如果在显示帧之间没有延迟发生这个问题。

解决方案是把cvWaitKey(20); 循环中。


问题出在我用过的相机,MSFT LifeCam。 我试过罗技C210和120,它们都能正常工作。


这是解决方案。

捕获的每个图像帧都将在下面的第一行中转换为灰度图像。 单独评论和运行代码将显示错误,因为您未将任何已处理的图像捕获到正在imshow中显示的边框中。

因此,注释cvtColor行并将cvtColor的第二个参数imshowframe 。 这将允许您显示摄像头的彩色视频。

cvtColor(frame, edges, CV_BGR2GRAY);

imshow("edges", frame);
链接地址: http://www.djcxy.com/p/80969.html

上一篇: OpenCV webcam capture problem

下一篇: Capturing webcam stream under linux