Qt使用opencv操作摄像头的例子
技术:opencv+Qt
概述
这是一个Qt使用opencv lib操作摄像头的例子
详细
一、简介
这是一个Qt使用opencv lib操作摄像头的例子
二、代码实现过程
新建一个VideoCapture对象,然后通过这个对象读取Mat图像数据,再讲Mat数据转成QImage显示在QLabel上。
1.是从文件(.MPG或.AVI格式)中读取视频,对象创建以后,OpenCV将会打开文件并做好准备读取它,如果打开成功,我们将可以开始读取视频的帧,并且cv::VideoCapture的成员函数isOpened()将会返回true(建议在打开视频或摄像头时都使用该成员函数判断是否打开成功)。
cv::VideoCapture capture(const string& filename); // 从视频文件读取 cv::VideoCapture capture("C:/Users/DADA/DATA/gogo.avi"); // 从视频文件读取
cv::VideoCapture capture(int device ); //视频捕捉设备 id ---笔记本电脑的用0表示
cv::VideoCapture capture(cv::CAP_IEEE1394 + 1);
这个例子中VideoCapture将尝试打开第2个(编号从0开始)1394摄像机。多数情况下,由于我们只有一个摄像机,因此没必要指定摄像机的域,此时使用cv::CAP_ANY是一种高效的方式(也即是0,所以不用特意指定)。
cv::VideoCapture VideoCapture; 这里的第二个VideoCapture是一个对象名 VideoCapture.open( "C:/Users/DADA/DATA/gogo.avi" );
将视频帧读取到cv::Mat矩阵中,有两种方式:一种是read()操作;另一种是 “>>”操作。
cv::Mat frame; cap.read(frame); //读取方式一 cap >> frame; //读取方式二
本次我们采用的是方法2
void MainWindow::openCamara() { m_capture.open(0); m_timer->start(50); } void MainWindow::closeCamer() { m_timer->stop(); m_capture.release(); }
该项目会使用到opencv编译得到的lib,这个可以自己下载源码编译
opencv3.4.5源码链接 https://opencv.org/releases.html
也可以在下面的链接下载
链接:https://pan.baidu.com/s/1MbcuK5AaMP1RoN2fJrj1Pw
提取码:kehw
三、项目文件结构
四、运行结果
程序运行起来后,点击openCamera按钮即可开启摄像头,点击closeCamera可关闭摄像头。以下是运行效果图。
本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
手机上随时阅读、收藏该文章 ?请扫下方二维码