QCamera QCameraViewfinder QCameraImageCapture 实现摄像头图片截取 多媒体(一)

一、效果图
在这里插入图片描述二、代码

#ifndef CAMERAIMGCAPTURE_H
#define CAMERAIMGCAPTURE_H

#include <QWidget>
#include <QDebug>
#include <QCamera>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QLabel>
namespace Ui {
class CameraImgCapture;
}

class CameraImgCapture : public QWidget
{
    Q_OBJECT

public:
    explicit CameraImgCapture(QWidget *parent = nullptr);
    ~CameraImgCapture();

    void init();

private slots:
    void on_pushButton_2_clicked();
    void on_imageCaptured(int id, QImage img);
    void on_pushButton_clicked();

private:
    Ui::CameraImgCapture *ui;
    QCamera *camera;
    QCameraViewfinder *view;
    QCameraImageCapture *imgCapture;
    QVector<QLabel*> m_Labels;
};

#endif // CAMERAIMGCAPTURE_H

#include "cameraimgcapture.h"
#include "ui_cameraimgcapture.h"

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

CameraImgCapture::~CameraImgCapture()
{
    delete ui;
}

void CameraImgCapture::init()
{
    m_Labels<<ui->label_1<<ui->label_2<<ui->label_3<<ui->label_4<<ui->label_5<<ui->label_6;
    camera = new QCamera;
    view = new QCameraViewfinder;
    imgCapture = new QCameraImageCapture(camera);
    connect(imgCapture,&QCameraImageCapture::imageCaptured,this,&CameraImgCapture::on_imageCaptured);

    ui->verticalLayout_2->addWidget(view);

    imgCapture->setCaptureDestination(QCameraImageCapture::CaptureToFile);
    camera->setCaptureMode(QCamera::CaptureStillImage);
    camera->setViewfinder(view);
    camera->start();
}

void CameraImgCapture::on_pushButton_2_clicked()
{
    imgCapture->capture();
}
void CameraImgCapture::on_imageCaptured(int id,QImage img)
{
    static int index = -1;
    index ++;
    if(index >=6){
        index = -1;
        return;
    }
    qDebug()<<"index"<<index;
    m_Labels.at(index)->setPixmap(QPixmap::fromImage(img).scaled(m_Labels.at(index)->size()));
}

void CameraImgCapture::on_pushButton_clicked()
{
    init();
}

三、总结
1.QCamera对系统摄像头进行封装
2.QCameraViewfinder提供一个展示窗口
3.QCameraImageCapture对记录的媒体资源进行捕捉

发布了30 篇原创文章 · 获赞 1 · 访问量 1136

猜你喜欢

转载自blog.csdn.net/u010906468/article/details/105006792