OpenCV播放摄像头视频

打印 上一主题 下一主题

主题 1882|帖子 1882|积分 5646

OpenCV盘算机视觉开辟实践:基于Qt C++ - 商品搜索 - 京东

播放摄像头视频和播放视频文件雷同,也是通过类VideoCapture来实现,只不过调用open的时候传入的是摄像头的索引号。假如盘算机安装了一个摄像头,则open的第一个参数通常是0,比如:
  1. VideoCapture capture;
  2. capture.open(0);
复制代码
大概直接用构造函数打开摄像头:
  1. VideoCapture capture(0);
复制代码
打开乐成后,就可以一帧一帧地读取并一帧一帧地播放了,其实就是在一个循环里,间隔地表现一幅一幅视频帧图片,当间隔时间短了,图片动起来了,就感觉是在看视频了。
在编程之前,我们要确保操作体系能打开摄像头并播放摄像头视频,具体步骤如下:
   把一个USB摄像头插入电脑主机。
   设置虚拟机的USB控制器。打开VMware设置对话框,在硬件列表里选中“USB控制器”,在右侧的“USB兼容性”中选择USB 3.0,如图12-4所示。
图12-4

   启动并连接USB摄像头。由于目前是在Linux虚拟机中,因此当我们在主机上插上USB摄像头后,必要先连接USB摄像头到虚拟机。启动Linux虚拟机后,依次单击VMware的菜单“虚拟机”→“可移动装备”→“Nintenda USB Camera”→“连接(断开与主机的连接)”,“连接(断开与主机的连接)”菜单上就会出现一个“√”,阐明USB摄像头连接到Linux虚拟机中了。我们可以用下令检察一下:
  1. # ll /dev/video*
  2. crw-rw---- 1 root video 81, 0 8月  31 20:56 /dev/video0
  3. crw-rw---- 1 root video 81, 1 8月  31 20:56 /dev/video1
复制代码
假如表现/dev/video0,则阐明摄像头已经连接到Linux虚拟机中了。现在在下令行中打开摄像头:
  1. # cheese
复制代码
此时就可以看到摄像头视频了,如图12-5所示。

​​​​​​​图12-5

体系能打开摄像头了,那么利用步伐方式打开也就简单了。这里先关闭这个摄像头窗口。
【例12.3】播放摄像头视频
   新建一个控制台工程,工程名是test。
   在工程配置文件test.pro的末了添加头文件和库文件:
  1. INCLUDEPATH += /usr/local/include/opencv4/
  2. LIBS += -L /usr/local/lib -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_core -lopencv_videoio
复制代码
留意:配置文件test.pro一定要包罗库opencv_videoio,这个库提供和摄像头相干的体系函数。
   打开main.cpp,并输入如下代码:
  1. #include <opencv2/opencv.hpp>
  2. using namespace cv;
  3. int main()
  4. {
  5.         VideoCapture capture(0); // 创建一个捕获对象并打开它
  6.         if (!capture.isOpened()) // 判断打开一个捕获视频的设备(也就是摄像头)是否成功
  7.         {
  8.                 puts("open failed");
  9.                 return -1;
  10.         }
  11.         Mat frame;
  12.         while (capture.read(frame))                 // 读取视频帧
  13.         {
  14.                 imshow("video-demo", frame);         // 显示视频帧
  15.                 if (waitKey(30) >= 0)                        // 延时30毫秒,按下任何键就退出
  16.                         break;                                                 // 跳出循环
  17.         }
  18.         return 0;                                                         // 结束程序
  19. }
复制代码
在上述代码中,起首创建一个捕获对象并打开它,然后判断打开是否乐成。假如打开乐成,则通过while循环逐帧读取并用imshow表现该帧图片,在while中每隔30毫秒循环读取帧并表现,这样看起来就像视频了。用户按下任何键就退出循环结束步伐。waitKey(30)表示步伐每30毫秒检测一次按键。
类VideoCapture既支持视频文件的读取,也支持摄像头视频的读取。假如要打开视频文件,则输入视频文件路径名;假如要打开摄像头,则输入摄像头的ID。
   保存工程并运行,结果如图12-6所示。
​​​​​​​

图12-6

要退出步伐,可以在键盘上按任何键,比如空格键。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表