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();

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


相关文章
|
11天前
|
API
【Qt】Qt定时器类QTimer
【Qt】Qt定时器类QTimer
|
16天前
|
C++
【qt】自定义代理类
【qt】自定义代理类
6 0
|
16天前
|
搜索推荐
【qt】自定义界面类
【qt】自定义界面类
13 0
|
30天前
|
Windows
Qt 目录操作(QDir 类)及展示系统文件实战 & QFilelnfo 类介绍和获取文件属性项目实战
Qt 目录操作(QDir 类)及展示系统文件实战 & QFilelnfo 类介绍和获取文件属性项目实战
Qt 目录操作(QDir 类)及展示系统文件实战 & QFilelnfo 类介绍和获取文件属性项目实战
|
30天前
|
开发者
Qt 布局(QSplitter 类&QDockWidget 类) 总结
Qt 布局(QSplitter 类&QDockWidget 类) 总结
Qt 布局(QSplitter 类&QDockWidget 类) 总结
|
30天前
|
区块链
【qt】最快的开发界面效率——混合编程3
【qt】最快的开发界面效率——混合编程
34 1
|
30天前
【qt】最快的开发界面效率——混合编程2
【qt】最快的开发界面效率——混合编程
34 1
|
30天前
【qt】最快的开发界面效率——混合编程1
【qt】最快的开发界面效率——混合编程
36 0
|
30天前
|
C++ 存储 容器

推荐镜像

更多