QR扫码综合示例教程(二)Qt6.2.1(widget)摄像头显示

 前言:

Qt6对多媒体模块做了大量修改,虽然当前不少bug,但却是未来的发展方向。本次示例先从获取摄像头的帧开始,仅使用Qt6的库

一、新建Qt工程

编译系统使用qmake

 qt6.2.1的套件可以使用

注:

1.Qt6.2中,多媒体模块只能在VS编译器下使用,不支持minGW编译器

2.Qt6.2的官方预编译库,只有64位的,没有32位的

 

 二、修改工程文件

 在pro文件中,加入多媒体模块

QT += multimedia multimediawidgets

三、绘制测试UI

 这是笔者已绘制的UI

四、关键代码

    //初始化下拉择选项框
    const QList<QCameraDevice> cameras = QMediaDevices::videoInputs();
    ui->comboBox->blockSignals(true);
    for (const QCameraDevice &cameraDevice : cameras) {
        qDebug()<<cameraDevice.description();
        ui->comboBox->addItem(cameraDevice.description(), cameraDevice.id());
    }
    ui->comboBox->blockSignals(false);

    //初始化摄像头
    m_camera = new QCamera(QMediaDevices::defaultVideoInput());
    connect(m_camera, &QCamera::errorOccurred, [this](){
        qDebug()<< "camera error occurred"<<this->m_camera->errorString();
    });

    //初始化摄像头会话管理
    m_captureSession = new QMediaCaptureSession;

    m_captureSession->setCamera(m_camera);
    m_captureSession->setVideoOutput(ui->videowidget);

五、运行程序

 点击开始或切换摄像头,就可以看到预览画面

示例源码下载

后记:

本示例笔者是在win10系统下进行的,其他平台可能会有一些差异

本示例仅是一测试程序,实际使用时,可能会遇到一些问题,请读者自行解决

也有读者要问,为什么不直接使用第三方库呢?笔者承认,不少第三方库,如opencv会很轻松打开摄像头,但需要引入第三方库。一方面,直接使用Qt库,就不用再引入库了;另一方面,opencv摄像头的唯一ID可能要自己做了,而Qt已经做好了

注:

1.当摄像头被其他程序占用时,Qt无法打开

2.当多个摄像头接入同一USB总线上时,若流量太大,可能无法同时打开多个摄像头

3.本示例只能使用VS编译器

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁白杨树下꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值