首先在pro中添加一下两个脚本:
QT += multimedia
QT += multimediawidgets
下面是头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QCameraImageCapture>
#include <QCamera>
#include <QCameraViewfinder>
#include <QCameraViewfinderSettings>
#include <QImage>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void imageDisplay(int id,QImage image);
void on_pushButton_2_clicked();
void on_pushButton_4_clicked();
private:
Ui::MainWindow *ui;
QCamera* m_camera;
QCameraViewfinder* m_viewfinder;
QCameraImageCapture* m_capture;
};
#endif // MAINWINDOW_H
下面就是.cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/*初始化camer数据*/
m_camera = new QCamera();
m_viewfinder = new QCameraViewfinder(ui->widget);
m_capture = new QCameraImageCapture(m_camera);
/*设置摄像头输出模式 这里要注意是摄像头是否支持修改参数信息*/
/*不支持*/
#if 0
QCameraViewfinderSettings viewfindersettins;
viewfindersettins.setResolution(480,320);//分辨率
viewfindersettins.setMinimumFrameRate(15.0);//最小帧
viewfindersettins.setMaximumFrameRate(30.0);
#endif
//m_camera->setViewfinderSettings(viewfindersettins);
//connect(ui->pushButton_3,SIGNAL(clicked()),m_capture,SLOT(capture()));
connect(m_capture,SIGNAL(imageCaptured(int,QImage)),this,SLOT(imageDisplay(int id,QImage image)));
m_capture->setCaptureDestination(QCameraImageCapture::CaptureToFile);
m_camera->setViewfinder(m_viewfinder);
m_camera->viewfinderSettings();
m_camera->setCaptureMode(QCamera::CaptureStillImage);
/*开启摄像头*/
m_camera->stop();
m_camera->start();
m_camera->status();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::imageDisplay(int id,QImage image)
{
ui->label->setPixmap(QPixmap::fromImage(image));
}
void MainWindow::on_pushButton_2_clicked()
{
m_camera->start();
}
void MainWindow::on_pushButton_4_clicked()
{
m_camera->stop();
}
下面就是界面设置:
窗口提升为:QVideoWidget类型