我初学opencv,需要用它读取摄像头。
正常读取摄像头,基本只需要三步:(省略了一些校验的代码)
第一步:初始化摄像头:
VideoCapture cameraleft(0);
第二步:把摄像头数据存入矩阵:
cameraleft>>eleft;
第三步,把图显示出来:
imshow("left",eleft);
可以返回第二步重复读取。
我很顺利地读取了笔记本电脑自带的摄像头。但是我又接了一个USB摄像头,同样方法就出现了莫名其妙的问题。时而可以读出来,时而读不出来,时而读出来黑屏。
为了解决USB摄像头读取不稳定这个问题。我把上面3步骤,分别做一个按钮,每个按钮对应一个步骤。反复试验后,我找到了窍门。
第一步修改为:
1.1步 VideoCapture cameraright(1);正常进行
1.2步 然后sleep一段时间。
1.3步 然后cameraright>>eright; 但是此处存的数据是无效的,直接丢掉。
然后正常进行第二步和第三步,就可以读出有效的数据了。
为什么笔记本电脑内置摄像头读取很顺利而usb摄像头很繁琐,原因有待高手进一步解释。