在qt中捕获摄像头画面在ui界面上添加一个comboBox控件、label标签和两个pushButton按钮comboBox用于显示摄像头的设备按钮用于开启摄像头和捕获当前帧的画面label用于显示摄像头捕获的画面。//需要在.pro文件中加上multimedia multimediawidgets QT core gui multimedia multimediawidgets//mainwindow.cpp #include mainwindow.h #include ui_mainwindow.h #include QCameraImageCapture #includeQCameraInfo #includeQCameraViewfinder MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui-setupUi(this); //获取当前系统的摄像头设备列表 const QListQCameraInfo cameras QCameraInfo::availableCameras(); for(const QCameraInfo cameraInfo:cameras){ qDebug()cameraInfo.deviceName().toLocal8Bit().data(); ui-comboBox-addItem(cameraInfo.deviceName().toUtf8().data()); } } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_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::on_pushButton_2_clicked() { imageCapture-capture(); } void MainWindow::ImageCaptureToShow(int id, const QImage preview) { qDebug()buhuo; preview.save(./1.jpg); } //mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include QCamera #include QCameraImageCapture #include QCameraViewfinder #include QMainWindow QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent nullptr); ~MainWindow(); private slots: void on_pushButton_clicked(); void on_pushButton_2_clicked(); void ImageCaptureToShow(int id,const QImage preview); private: Ui::MainWindow *ui; QCamera *camera; // QCameraViewfinder *viewfinder; QCameraImageCapture *imageCapture; }; #endif // MAINWINDOW_H