qt开发使用camera类获取摄像头信息并拍照保存

简介: qt开发使用camera类获取摄像头信息并拍照保存

首先是UI布局

在pro文件中添加两个类

QT += multimedia
QT += multimediawidgets

然后我们需要包含几个摄像头使用的头文件并创建摄像头的对象

#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
QCamera* m_camera;                      // 摄像头
QCameraViewfinder * m_viewFinder;       // 取景
QCameraImageCapture* m_imageCaputer;    // 截图

然后编写初始化函数,将电脑上扫描到的摄像头设备添加到combox中,并默认打开第一个获取到的摄像头将画面显示在widget中

// 遍历检测到的摄像头
    foreach (const QCameraInfo& info, QCameraInfo::availableCameras()) {
            m_camera = new QCamera(info);
            // qDebug()<<info.description()<<info.deviceName();
            ui->comboBox->addItem(info.deviceName());
    }
    //取景框类
    m_viewFinder = new QCameraViewfinder();
    m_camera->setViewfinder(m_viewFinder);
    QVBoxLayout *layout=new QVBoxLayout(ui->widget);
    layout->addWidget(m_viewFinder);
    
    //图像录制类
    m_imageCaputer = new QCameraImageCapture(m_camera);
    //打开摄像头
    m_camera->start();

然后编写拍照按钮的函数

//设置为拍照模式
    m_camera->setCaptureMode(QCamera::CaptureStillImage);
    //对相机锁定(异步操作)
    m_camera->searchAndLock();
    //拍照并且把照片保存到这个路径中
    m_imageCaputer->capture("C:\\Users\\kaishuibaicai\\Desktop\\camera\\camera");
    //解锁
    m_camera->unlock();

这里需要注意的是电脑上没有摄像头的话程序会直接异常结束,这里是因为我们初始化时候不管我们的对象有没有检测到摄像头都直接打开,在没有的情况下打开肯定是会崩溃的。


相关文章
|
3月前
Qt类结构分析
Qt类结构分析
57 3
|
3月前
【qt】如何读取文件并拆分信息?
【qt】如何读取文件并拆分信息?
28 0
|
3月前
|
网络协议
【qt】TCP客户端信息的接受和发送
【qt】TCP客户端信息的接受和发送
33 0
|
3月前
|
网络协议
【qt】TCP 服务端怎么收到信息?
【qt】TCP 服务端怎么收到信息?
32 0
|
2月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
|
2月前
|
2月前
|
设计模式 前端开发 安全
Qt注册类对象单例与单类型区别
在进行开发时,应当根据具体的应用场景和需求来选择使用单例模式或是单类型。如果是全局服务或状态管理,可能需要单例模式;如果是为了使QML环境下的不同组件能够访问到同一个后端服务对象,则可能需要使用单类型。
29 2
|
3月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
121 2
Qt开发网络嗅探器02
Qt开发网络嗅探器02
|
3月前
|
存储 运维 监控
Qt开发网络嗅探器01
Qt开发网络嗅探器01