《学习OpenCV 3(中文版)》 —从摄像头中读取

举报
清华大学出版社 发表于 2019/10/23 20:59:41 2019/10/23
【摘要】 本节书摘来自清华大学出版社《学习OpenCV 3(中文版)》 一书中第二章,作者是[美]安德里安 • 凯勒 (Adrian Kaehler) 加里 • 布拉德斯基 (Gary Bradski) , 阿丘科技 刘昌祥 吴雨培 王成龙 崔玉芳 等译。

从摄像头中读取

视觉”在计算机世界中可以表示很多东西,在一些情况下,我们分析从任意地方加载的静止的图像。在另一些情况下,我们会分析从硬盘中读取的视频。然而在更多的情况下,我们想要和从某种摄像头中读取的实时数据流进行交互。

OpenCV——或更准确地说,OpenCV中的HighGUI模块——为我们提供了一个简单的方式来驾驭这种情况。这个方法很接近于我们使用cv::VideoCapture从硬盘读取视频的方式,事实上,cv::VideoCapture对磁盘上的文件和摄像头是有一致接口的。对于前者来说,需要给它一个指示读取文件名的路径,对于后者来说,需要给它一个相机ID号(如果只有一个摄像头连接,这个ID号通常为0),ID的默认值是-1,这意味着“随意选择一个”,当然,当只有一个摄像头可以选择的时候这能够很好地工作(参考第8章,查阅详细解释),示例2-10展示了从文件或者摄像头中读取视频。

示例2-10:同一个对象可以读取视频文件,也可以连接摄像头

#include <opencv2/opencv.hpp> #include <iostream> int main( int argc, char** argv ) {   cv::namedWindow( "Example2_10", cv::WINDOW_AUTOSIZE );

  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所示打开指定的文件。如果没有给予任何文件名,程序将尝试打开一个摄像头。我们加入一段检查代码来确定程序是否真的开启了一些东西,如果没有,将报错。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。