Qt笔记(四十)之Qt打开笔记本摄像头

104 篇文章 127 订阅

一.前言
楼主最近开始接触摄像头这一块,发现Qt有封装好的库,于是就想记录相关的学习历程,方便自己查看,该文章只是简单实现了打开摄像头, 截图 关闭摄像头的功能

二.实现过程
1新建工程的时候需要moudle勾选multimediawidgets multimedia或者在pro文件中添加

QT       += core gui multimediawidgets multimedia

2.简单布局界面
注意:左侧的控件是Vertical Layout
在这里插入图片描述

在这里插入图片描述
3. h文件内容

#ifndef CAMERADEMO_H
#define CAMERADEMO_H

#include <QWidget>
#include <QCamera>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QDebug>

namespace Ui {
class CameraDemo;
}

class CameraDemo : public QWidget
{
    Q_OBJECT

public:
    explicit CameraDemo(QWidget *parent = 0);
    ~CameraDemo();

private slots:
    void on_pushButton_start_clicked();

    void on_pushButton_screen_clicked();

    void on_pushButton_quit_clicked();

    void onImageCaptured(int idx,QImage img);

private:
    Ui::CameraDemo *ui;

    QCamera *camera;
    QCameraViewfinder *cameraViewFinder;
    QCameraImageCapture *cameraImageCapture;
};

#endif // CAMERADEMO_H

4.cpp内容

#include "CameraDemo.h"
#include "ui_CameraDemo.h"

CameraDemo::CameraDemo(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::CameraDemo)
{
    ui->setupUi(this);
    setWindowTitle("调用摄像头例程V1.0");
    ui->pushButton_start->setText("打开摄像头");
    ui->pushButton_screen->setText("截图");
    ui->pushButton_quit->setText("关闭摄像头");

    camera = new QCamera(this);
    cameraViewFinder = new QCameraViewfinder(this);
    cameraImageCapture = new QCameraImageCapture(camera);
    ui->verticalLayout_camera->addWidget(cameraViewFinder);
    camera->setViewfinder(cameraViewFinder);
    connect(cameraImageCapture,SIGNAL(imageCaptured(int,QImage)),this,SLOT(onImageCaptured(int,QImage)));
}

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

void CameraDemo::on_pushButton_start_clicked()
{
    camera->start();
}

void CameraDemo::on_pushButton_screen_clicked()
{
    qDebug()<<"开始截图";
    ui->label_screenShot->clear();
    cameraImageCapture->capture();
}

void CameraDemo::onImageCaptured(int idx,QImage img)
{
   qDebug()<<idx;
   ui->label_screenShot->setPixmap(QPixmap::fromImage(img));
}

void CameraDemo::on_pushButton_quit_clicked()
{
    camera->stop();
}

5.效果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值