最进用opencv做东西时经常用到摄像头,发现了开启摄像头有好几个函数可以实现,我感觉可能是因为opencv1.0与2.0的函数不一样导致的(晕死,搞这么多函数还不是实现一个功能),接下来总结我用到的几个开启摄像头的方法:
第一种:比较简单
VideoCapture cap(0); //打开摄像头
//VideoCapture capture("D:/videos/PetsD2TeC2.avi") 打开一个视频文件
if(!cap.isOpened()) //判断摄像头是否打开
Mat frame;
while( waitKey(10))
cap>>frame;
第二种:有好多函数
CvCapture *cam = cvCaptureFromCAM(0);
CvCapture *cam = cvCreateCameraCapture(0);//两者使用时没有区别,@_@
IplImage* image = cvQueryFrame( cam); //从摄像头抓取一帧并返回,无法修改
// cvGrabFrame( cam );//从摄像头获取一帧
// IplImage* image = cvRetrieveFrame( CvCapture* capture );//返回获取的那帧
cvCaptureFromCAM与cvCreateCameraCapture就名字不一样,使用时一样的
函数cvQueryFrame与函数cvGrabFrame和函数cvRetrieveFrame俩实现的功能一样,相当于升级版的,用着更简便。
在显示图片时,imshow与(cvNamedWindow和cvShowImage)的功能也是一样的,
就是imshow更快捷一点,应该也是换版本的原因,越换越简单了:-)