qt6.2.4摄像头

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->pushButton->setEnabled(false);
    ui->pushButton_2->setEnabled(false);

    ui->comboBox->addItem("请选择摄像头");
    // 获取可用摄像头列表
    cameras = QMediaDevices::videoInputs();

    if(cameras.isEmpty())
    {
        QMessageBox::information(this,"提示","该机器无可用摄像头","确定");
        return;
    }

    // 遍历摄像头列表并输出名称
    for (const QCameraDevice &cameraDevice : cameras) {
//        qDebug()<< cameraDevice.description();
        ui->comboBox->addItem(cameraDevice.description());
    }
    //根据下拉项返回指定摄像头id
    connect(ui->comboBox,&QComboBox::currentTextChanged,this,[=](QString text){
        for (const QCameraDevice &cameraDevice : cameras) {
            if(cameraDevice.description() == text)
            {
                ui->pushButton->setEnabled(true);
                m_cameraDevice = cameraDevice;//保存摄像头信息
            }
        }
    });

}



void MainWindow::on_pushButton_clicked()
{
    captureSession= new QMediaCaptureSession;
    camera = new QCamera(m_cameraDevice);
    //视频输入
    captureSession->setCamera(camera);
    //视频输出
    captureSession->setVideoOutput(ui->widget);
//ui->widget QVideoWidget 关闭摄像头之后最后一帧画面会留在控件上

    camera->start();
    m_isWorking = true;
    ui->pushButton->setEnabled(false);
    ui->pushButton_2->setEnabled(true);
//    captureSession->start();
}


void MainWindow::on_pushButton_2_clicked()
{
    camera->stop();
    m_isWorking = false;
    ui->pushButton->setEnabled(true);
    ui->pushButton_2->setEnabled(false);

    camera->deleteLater();
    captureSession->deleteLater();
//    captureSession->stop();
}

关闭第一个摄像头之后不能更换显示,关闭之后会残留最后一帧画面,后续再改

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值