《学习OpecCV》一书的第二章中有一节是关于用摄像头读入数据的,其中提到cvCreateCameraCapture()这个函数,传入-1表示任选一个摄像设备进行视频流捕捉,
书中源码如下:
cvCapture* capture;
if(argc==1){
capture=cvCreateCameraCapture(0);
}else{
capture = cvCreateFileCapture(argv[1]);
}
assert(capture!=NULL);
//Rest of program proceeds totally ignorant
但是我自己在试验书中的源码的时候发现传入-1时返回值的确不为空,但是程序还是没有图像数据。检查摄像头驱动,正常。说明不是摄像头的问题。问题出在程序内部。
后来发现是摄像头在打开的时候需要时间,在cvCreateCameraCapture()之后加上一句cvWaitKey(5000)之类的语句来等待摄像头开启之后就能正常运行了。