Opencv调取摄像头失败的处理方法

来源:互联网 发布:mongodb 默认端口 编辑:程序博客网 时间:2024/06/05 21:08

最近想学习一下opencv,就弄了一本《学习opencv》的书看,书中的例子也随便敲一敲。可是,在调去摄像头时出现了如下问题。具体代码如下:

#include "stdafx.h"  #include "opencv/cv.h"  #include "opencv/highgui.h"  #include "stdio.h"  #include <opencv2\opencv.hpp>int main(){<span style="white-space:pre"></span>cvNamedWindow("video", CV_WINDOW_AUTOSIZE);CvCapture* capture = NULL;capture = cvCaptureFromCAM(1);IplImage*frame;while (1){frame = cvQueryFrame(capture);if (!frame)break;cvShowImage("video", frame);char c = cvWaitKey(330);if (c == 27)break;}cvReleaseCapture(&capture);}

始终出现摄像头无法打开,或者就是显示灰色的画面,或者选择视频源之后画面一闪就消失了,如下图所示:


始终不得其解,程序没问题,摄像头也没问题,为何别人都能行,我的就不可以。心里郁闷,有问题就上网搜吧。有的说是调用的函数的问题,有的说是摄像头格式的问题,还有的说是opencv本身的bug,有的还说是win7不兼容......结果我换了摄像头,vs,opencv版本,我的问题依旧没有得到解决。无奈,只能暂时放下了。有一天看到《opencv3编程入门》这本书,上面有一个调用摄像头采集图像的例子,程序如下:

#include "stdafx.h"#include "opencv2/opencv.hpp"#include <cv.h>using namespace cv;int main(int argc, char** argv){VideoCapture capture(0);while (1){Mat frame;capture >> frame;imshow("读取视频", frame);waitKey(30);}return 0;}
终于将摄像头调取出来了,结果如下所示:


可是为什么用的同样是opencv函数,为什么之前的不行,现在的可以呢?笔者认为,之前使用的opencv函数可能版本过低,还是opencv1.0时的函数。不论怎么样,这个问题是解决了,希望对遇有类似问题的人有所帮助。

2 0
原创粉丝点击