Ubuntu上使用opencv 您所在的位置:网站首页 电脑外接摄像头测试不到画面 Ubuntu上使用opencv

Ubuntu上使用opencv

2024-07-10 20:07| 来源: 网络整理| 查看: 265

文章目录 一、Ubuntu上安装opencv二、一个打开摄像头显示处理视频的程序三、打开摄像头采集图像并保存(改进)四、小结五、参考资料

本文章使用的系统时Ubuntu 18.04 desktop

一、Ubuntu上安装opencv

安装及下载参考此链接,我就不详细说明 https://blog.csdn.net/qq_43279579/article/details/109231383

二、一个打开摄像头显示处理视频的程序 代码 #include using namespace cv; using namespace std; int main() { VideoCapture capture(0); while (1) { Mat frame; capture >> frame; imshow("读取视频帧", frame); waitKey(30); } system("pause"); return 0; } 编译

g++ test.cpp -o test `pkg-config --cflags --libs opencv` 注意:此处用的是反引号

在这里插入图片描述

运行

在这里插入图片描述 程序出现无法打开摄像头 解决方法: ①查看摄像头标志是否高亮 在这里插入图片描述 ②如果摄像头不是高亮,就点击它,选择连接 在这里插入图片描述 第一次连接可能会连接失败或没有下面这个界面弹出,如果遇到这个情况按照以下操作进行 打开此电脑(Win10)->管理->服务和应用程序->VMware USB Arbitration,重启动此服务,回到虚拟机查看就会弹出上面的界面 在这里插入图片描述 ③查看是否可以使用摄像头

lsusb 查看usb设备列表 ls /dev/video* 查看摄像头驱动安装 sudo apt-get install cheese 如果已经安装,这步可以省略 cheese 打开摄像头

在这里插入图片描述 如果使用cheese打开摄像头发现,摄像头能打开,但是画面却无法显示(黑屏),这个问题不解决,运行程序任然会出现问题,导致程序出现打开摄像头失败超时的问题 解决办法: 首先虚拟机上打开虚拟机(M)->设置,接着点击USB控制器,更换USB兼容性,原来是USB 2.0就更换为USB 3.0,若是USB 3.0就更换为USB 2.0。选择确定,虚拟机就重新启动,启动完成,就重新设置摄像头的连接,完成后,使用cheese看摄像头是否能够看到画面,能看到画面就表示完成了。 在这里插入图片描述 编译过程获得opencv头文件、链接lib库文件的路径的方法: 如果编译没有指定路径,头文件就会查看gcc的环境变量和查找系统默认的目录:/usr/include;/usr/local/include,链接lib库gcc的环境变量和查找默认路径/lib;/usr/lib;/usr/local/lib。

运行效果 在这里插入图片描述 4. 问题分析 ①如果要求打开你硬盘上一个视频文件来播放,如何修改?

将代码中的VideoCapture capture(0);修改为VideoCapture capture("/home/ubuntu/video/test.mp4") 即将0改为需要播放的视频名称以及它所存放的路径

②在while循环中,Mat是一个什么数据结构? 为什么一定要加一句waitKey延时代码,删除它行不行?

Mat是一个矩阵,每个图像都是由无数的点构成的,即Mat是一个图像矩阵。 waitKey()函数的功能是不断刷新图像,如果没有这个就无法实现画面的实时显示,即看不到画面的变化。

③此代码会在while循环中一直运行,你如果试图用鼠标关闭图像显示窗口,会发现始终关不掉。需要用键盘Ctrl+C 强制中断程序,非常不友好。如何改进。

增加一个判断语句,来进行关闭

三、打开摄像头采集图像并保存(改进) 代码 /********************************************************************* 打开电脑摄像头,空格控制视频录制,ESC退出并保存视频RecordVideo.avi *********************************************************************/ #include #include #include #include using namespace cv; using namespace std; void main() { //打开电脑摄像头 VideoCapture cap(0); if (!cap.isOpened()) { cout startOrStop = 1 - startOrStop; if (startOrStop == 0) { flag = 1; } } if (key == 27)//按下ESC退出整个程序,保存视频文件到磁盘 { break; } if (startOrStop == 0 && flag==1) { writer cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有