《学习OpenCV 3(中文版)》 —小结
593
2022-05-28
从摄像头中读取
“视觉”在计算机世界中可以表示很多东西,在一些情况下,我们分析从任意地方加载的静止的图像。在另一些情况下,我们会分析从硬盘中读取的视频。然而在更多的情况下,我们想要和从某种摄像头中读取的实时数据流进行交互。
OpenCV——或更准确地说,OpenCV中的HighGUI模块——为我们提供了一个简单的方式来驾驭这种情况。这个方法很接近于我们使用cv::VideoCapture从硬盘读取视频的方式,事实上,cv::VideoCapture对磁盘上的文件和摄像头是有一致接口的。对于前者来说,需要给它一个指示读取文件名的路径,对于后者来说,需要给它一个相机ID号(如果只有一个摄像头连接,这个ID号通常为0),ID的默认值是-1,这意味着“随意选择一个”,当然,当只有一个摄像头可以选择的时候这能够很好地工作(参考第8章,查阅详细解释),示例2-10展示了从文件或者摄像头中读取视频。
示例2-10:同一个对象可以读取视频文件,也可以连接摄像头
#include
cv::VideoCapture cap; if (argc==1) { cap.open(0); // open the first camera
} else {
cap.open(argv[1]);
} if( !cap.isOpened() ) { // check if we succeeded std::cerr << "Couldn't open capture." << std::endl; return -1; }
// The rest of program proceeds as in #simple_opencv_program_for_playing_a_vide ...
在示例2-10中,如果一个文件名被提供,OpenCV将如示例2-3所示打开指定的文件。如果没有给予任何文件名,程序将尝试打开一个摄像头。我们加入一段检查代码来确定程序是否真的开启了一些东西,如果没有,将报错。
视频 OpenCV
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。