Opencv无法调用cvCaptureFromCAM无法打开电脑自带摄像头

最近一段正在为毕设的问题而焦虑,因为毕设选的题是关于图像处理方面的,在计算机视觉这个方面自己完全就是一个新手,完全都要从头学呢!不由得让人吐槽!

由于毕设要用的Opencv这个开源的计算机视觉库,由于毕设需要采集人图像,于是乎便敲了一段很简单的代码上去,但是结果却并不如想象中的那样。下面是代码

 1 const char *windowTitle="saveImageDemoWindow";    
 2     cvNamedWindow(windowTitle,CV_WINDOW_AUTOSIZE);
 3     CvCapture *capture=NULL;
 4     capture    =cvCaptureFromCAM(-1);
 5     IplImage *frame;
 6     if(capture==NULL)
 7     {
 8         fprintf(stderr,"can't open the camera");
 9         return 1;
10     }else
11     {
12         while (1)
13         {
14             frame=cvQueryFrame(capture);    
15             if(!frame)
16                 break;
17             cvShowImage(windowTitle,frame);
18             char key=cvWaitKey(33);
19             if(key==13)
20                 break;
21         }
22     }
23     cvReleaseCapture(&capture);
24     cvDestroyWindow(windowTitle);
25     return 0;

按照官方文档的说明其运行结果应该是完全正确的,但是实际运行过程中却出现执行cvCaptureFromCAM(-1)这个函数无法获得capture的情况。

按照官方文档的说明,根据函数签名,这里需要传入一个整形值,代表摄像设备的索引,0为默认打开本地电脑自带摄像设备,-1代表随机的(如果电脑没有外接摄像头的话0和-1都可以),其他值则是指定要显示的摄像设备。

但是实际测试中发现笔记本电脑貌似只能选择参数0才可以,传入-1却并不行,无法正常打开摄像头。

参考链接:http://blog.csdn.net/fightingforcv/article/details/19336181

原文地址:https://www.cnblogs.com/dependmyse/p/3640003.html