在qt中捕获摄像头画面,在ui界面上添加一个comboBox控件、label标签和两个pushButton按钮,comboBox用于显示摄像头的设备,按钮用于开启摄像头和捕获当前帧的画面,label用于显示摄像头捕获的画面。- //需要在.pro文件中加上multimedia multimediawidgets
- QT += core gui multimedia multimediawidgets
复制代码 [code]//mainwindow.cpp#include "mainwindow.h"#include "ui_mainwindow.h"#include #include#includeMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this); //获取当前系统的摄像头设备列表 const QList cameras = QCameraInfo::availableCameras(); for(const QCameraInfo &cameraInfo:cameras){ qDebug()addItem(cameraInfo.deviceName().toUtf8().data()); }}MainWindow::~MainWindow(){ delete ui;}void MainWindow: n_pushButton_clicked(){ //创建摄像头对象(把系统中的摄像头路径给QCamera对象) camera = new QCamera(ui->comboBox->currentText().toUtf8()); //创建取景器对象,也就是用于显示摄像头画面的控件,并给对象一个父指针 QCameraViewfinder *viewfinder = new QCameraViewfinder(ui->label); //根据label大小设置取景器的大小 viewfinder->resize(ui->label->size()); //把取景器显示在ui中 viewfinder->show(); //绑定摄像头和摄像头画面控件 camera->setViewfinder(viewfinder); //打开摄像头 camera->start(); //捕获图像需要初始化一个新的QCameraImageCapture对象 imageCapture = new QCameraImageCapture(camera); camera->setCaptureMode(QCamera::CaptureStillImage); //绑定信号与槽函数进行保存当前帧数据 connect(imageCapture,&QCameraImageCapture::imageCaptured,this,&MainWindow::ImageCaptureToShow);}void MainWindow: n_pushButton_2_clicked(){ imageCapture->capture();}void MainWindow::ImageCaptureToShow(int id, const QImage &preview){ qDebug() |