【QT】qt操作摄像头

先上效果图

左上角显示摄像头下拉选项,右上角分别是打开摄像头、关闭摄像头、截图保存的功能,左下显示摄像头内容,右下显示截图图片

【QT】qt操作摄像头_第1张图片

如何实现?

1、在工程文件中添加,QT += multimedia (多媒体),QT += multimediawidgets

【QT】qt操作摄像头_第2张图片

2、主要用到的部件

【QT】qt操作摄像头_第3张图片

3、获取摄像头信息

【QT】qt操作摄像头_第4张图片

    //读取所有摄像头信息
    QList infos = QCameraInfo::availableCameras();
    foreach(QCameraInfo info, infos){
        qDebug()<comboBox->addItem(info.deviceName());
    }

4、打开摄像头

QCameraViewfinder *vf;//摄像头取景器部件
void Camera::on_openCamera_clicked()
{
    myCamera = new QCamera(ui->comboBox->currentText().toUtf8(), this);
    //创建一个获取图片对象
    cp = new QCameraImageCapture(myCamera);
    //抓取图片的信号
    connect(cp, &QCameraImageCapture::imageCaptured,this, &Camera::save_pic);

#if 0
    QVideoWidget *w = new QVideoWidget(ui->widget);
    w->resize(ui->widget->size());
    myCamera->setViewfinder(w);
    w->show();

#else
    vf = new QCameraViewfinder(ui->widget);
    vf->resize(ui->widget->size());
    myCamera->setViewfinder(vf);
    vf->show();

#endif
    myCamera->start();
}

5、关闭摄像头

void Camera::on_closeCamera_clicked()
{
    myCamera->stop();
    vf->close();
}

6、抓拍     QCameraImageCapture

QCameraImageCapture *cp;//抓拍部件
关联槽函数  connect(cp, &QCameraImageCapture::imageCaptured,this, &Camera::save_pic);//抓取图片的信号 
void Camera::on_captureBt_clicked()
{
    //抓取一帧数据
    cp->capture("./m.jpg");
}

//保存图片槽函数
void Camera::save_pic(int id, const QImage &preview)
{
   qDebug()<label_dis->size());
   ui->label_dis->setPixmap(mmp);
}

qt自带库操作摄像头demo-C++文档类资源-CSDN下载

你可能感兴趣的:(QT学习之路,qt,开发语言)