QT 显示USB摄像头数据

QT 显示USB摄像头数据

一、简述

      记--简单的将USB摄像头捕获的图像数据显示到窗口上。

      例子1打包:链接: https://pan.baidu.com/s/1U3CW7sCETVyeMqTRD6dNUQ 提取码: gh5x

      例子2打包:链接: https://pan.baidu.com/s/11tFqk_p0NSjIO94-2kv0vA 提取码: v7h5

                                            例子1 直接显示到窗口

二、效果

         将USB摄像头连接到电脑(有些摄像头需要安装驱动),然后打开软件就可以看到摄像头捕获的图像了。

        (例子中默认打开第一个摄像头设备)

        

       使用摄像头类型为:

       QT 显示USB摄像头数据_第1张图片

三、工程结构

         QT 显示USB摄像头数据_第2张图片

        布局

        QT 显示USB摄像头数据_第3张图片

四、源文件

        MyCamera.pro文件

QT       += core gui multimediawidgets

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = MyCamera
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

        mainwindow.cpp文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include 

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;
    QCamera* m_camera;//摄像头设备
};

#endif // MAINWINDOW_H

        main.cpp文件

#include "mainwindow.h"
#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

        mainwindow.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    m_camera = new QCamera(this);//初始化摄像头设备
    m_camera->setCaptureMode(QCamera::CaptureVideo);//设置捕捉模式为视频
    m_camera->setViewfinder(ui->centralWidget);//设置 摄像头画面的显示位置
    m_camera->start();//开启摄像头
}

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

五、总结

        1、使用摄像头相关类QCamera,需要在.pro文件添加:multimediawidgetsQT 显示USB摄像头数据_第4张图片

      更多请查看帮助文档:

       QT 显示USB摄像头数据_第5张图片

       2、 摄像头显示的窗体控件需要提升为QVideoWidget类型

              QT 显示USB摄像头数据_第6张图片

             

                                                                    例子2 显示到widget控件

一、效果 

二、工程结构 

         QT 显示USB摄像头数据_第7张图片

         布局

         QT 显示USB摄像头数据_第8张图片 

三、主要代码

       mainwindow.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    m_camera = new QCamera(this);//初始化摄像头设备
    m_camera->setCaptureMode(QCamera::CaptureVideo);//设置捕捉模式为视频
    m_camera->setViewfinder(ui->widgetCamera);//设置 摄像头画面的显示位置

}

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

void MainWindow::on_btnCameraCtrl_clicked()//摄像头开关控制
{
    if( (ui->btnCameraCtrl->text() == "开启摄像头") && (m_camera->state() !=  QCamera::ActiveState) )//未开启状态
    {
        m_camera->start();//开启摄像头
        ui->btnCameraCtrl->setText("关闭摄像头");
    }
    else
    {
        m_camera->stop();//关闭摄像头
        ui->btnCameraCtrl->setText("开启摄像头");
    }
}


void MainWindow::on_btnSnap_clicked()//抓拍
{
    if( m_camera->state() ==  QCamera::ActiveState)//摄像头开启状态下才抓拍
    {
        QPixmap pixmap = ui->widgetCamera->grab();//将widget内容保存为pixmap图像信息
        pixmap.save("Snap.bmp");//保存为Snap.bmp
    }
}

四、总结

      4.1 将widget显示内容保存为图片

QPixmap pixmap = ui->widgetCamera->grab();//将widget内容保存为pixmap图像信息
pixmap.save("Snap.bmp");//保存为Snap.bmp

     4.2 获取可用摄像头设备列表

//包含头文件QCameraInfo
QList cameras = QCameraInfo::availableCameras();//获取可用摄像头设备列表
foreach (const QCameraInfo &cameraInfo, cameras) 
{
   qDebug()<

 

你可能感兴趣的:(QT)