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