IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> qt实现调用电脑摄像头 -> 正文阅读

[C++知识库]qt实现调用电脑摄像头

原理很简单。
QCamera用于捕获当前设备上的相机。
QCameraImageCapture用于捕获每一帧图片。
当QCameraImageCapture发送imageCaptured信号的时候。这个时候我们自定义一个槽函数来获取一帧图片
当然还需要定义一个定时器,用于主动触发捕获图片。
直接看代码:
.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class QCamera;
class QCameraViewfinder;
class QCameraImageCapture;
class QLabel;
class QTimer;

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

protected slots:
    void onCaptureClicked();
    void onExitClicked();
    void onImageCaptured(int id, const QImage &preview);
    void update();

private:
    QCamera *m_pCamera=nullptr;
    QCameraViewfinder*   m_pViewfinder=nullptr;   //渲染摄像头
    QCameraImageCapture* m_pImageCapture=nullptr; //获取摄像头当前帧
    QLabel *m_pShowLabel=nullptr;
    QImage m_Image;
    QTimer *m_pTimer=nullptr;
};
#endif // WIDGET_H

.cpp

#include "widget.h"
#include <QPushButton>
#include <QCamera>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QVBoxLayout>
#include <QLabel>
#include <QTimer>
#include <QMessageBox>
#include <QSettings>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    m_pCamera=new QCamera(this);
    m_pViewfinder = new QCameraViewfinder(this);
    m_pShowLabel=new QLabel(this);
    m_pImageCapture = new QCameraImageCapture(m_pCamera);
    QPushButton* button1 = new QPushButton("Capture");
    QPushButton* button2 = new QPushButton("Exit");
    button1->setFixedSize(100,25);
    button2->setFixedSize(100,25);
    QVBoxLayout *mainLayout=new QVBoxLayout(this);
    mainLayout->addWidget(button1);
    mainLayout->addWidget(button2);
    mainLayout->addWidget(m_pShowLabel);

    connect(button1,&QPushButton::clicked,this,&Widget::onCaptureClicked);
    connect(button2,&QPushButton::clicked,this,&Widget::onExitClicked);
    connect(m_pImageCapture,&QCameraImageCapture::imageCaptured,this,&Widget::onImageCaptured);

    m_pImageCapture->setCaptureDestination(QCameraImageCapture::CaptureToFile);
    m_pCamera->setCaptureMode(QCamera::CaptureVideo);
    m_pCamera->start();

    m_pTimer = new QTimer(this);
    connect(m_pTimer, SIGNAL(timeout()), this, SLOT(update()));

    this->resize(800,600);
}

Widget::~Widget()
{
}

void Widget::onCaptureClicked()
{
    m_pTimer->start(100);
}

void Widget::onExitClicked()
{
    m_pTimer->stop();
    //m_pCamera->stop();
}

void Widget::onImageCaptured(int id, const QImage &preview)
{
    m_Image=preview.convertToFormat(QImage::Format_RGB888);
    m_pShowLabel->setPixmap(QPixmap::fromImage(m_Image));
}

void Widget::update()
{
    m_pImageCapture->capture();
}


效果图:
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 10:54:21  更:2022-05-06 10:55:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 5:05:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码