无法从网络摄像头读取

时间:2015-04-29 09:34:14

标签: c++ opencv webcam-capture

由于某些奇怪的原因,程序无法从网络摄像头读取帧。它成功打开了网络摄像头。我已经搜索过这个问题了,我发现了各种各样的解决方案。这是我的代码

#include <iostream>
#include <cstdlib>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

int main()
{
    // access the default webcam 
    cv::VideoCapture cap(0); 

    // Double check the webcam before start reading. 
    if ( !cap.isOpened() ){ 
        std::cerr  << "Cannot open the webcam " << std::endl;
        exit (EXIT_FAILURE);
    }

    cv::Mat frame;
    cv::namedWindow("webcam",CV_WINDOW_AUTOSIZE);

    while ( true ){

       // acquire frame 
       cap >> frame;

       // Safety checking 
       if ( !frame.data ){ 
         std::cerr << "Cannot acquire frame from the webcam " << std::endl;
            break;
       }

       cv::imshow("webcam", frame); 

       if ( cv::waitKey(30) == 27){
        std::cout << "esc key is pressed" << std::endl;
        break; 
       }
    }

    return 0;
} 

这是终止程序之前的窗口。

enter image description here

我正在使用Windows 7(戴尔笔记本电脑)。代码是在与.dll链接的发布模式下编译的。 OpenCV版本是2.4.10。 在命令提示符

cl /EHsc main.cpp /Fetest.exe /I D:\CPP_Libraries\opencv_2.4.10\build\include /link /LIBPATH:D:\CPP_Libraries\opencv_2.4.10\build\x86\vc12\lib opencv_core2410.lib opencv_highgui2410.lib 

我在ubuntu中运行相同的代码(双启动与Windows 7一起)并打开网络摄像头,但不通过HighGUI,我收到此错误

HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP
init done 
opengl support available 

有关此事的任何建议。经过一些挖掘,some ppl指出cmake,因此我需要重新安装opencv并正确配置cmake。如果这对ubuntu和Windows都是真正的问题,是否有任何解决方案可以解决此问题而无需重新安装库?谢谢

1 个答案:

答案 0 :(得分:-1)

关注VideoCapture heure的opencv文档:VideoCapture。它提供了一个用C ++进行视频捕获的简单示例。

您的代码存在一些差异,Comparable在循环内部。