当前位置:   article > 正文

QT 显示USB摄像头数据_qt usb 摄像头 获取画面

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摄像头连接到电脑(有些摄像头需要安装驱动),然后打开软件就可以看到摄像头捕获的图像了。

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

        

       使用摄像头类型为:

       

三、工程结构

         

        布局

        

四、源文件

        MyCamera.pro文件

  1. QT += core gui multimediawidgets
  2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
  3. TARGET = MyCamera
  4. TEMPLATE = app
  5. SOURCES += main.cpp\
  6. mainwindow.cpp
  7. HEADERS += mainwindow.h
  8. FORMS += mainwindow.ui

        mainwindow.cpp文件

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QCamera>
  5. namespace Ui {
  6. class MainWindow;
  7. }
  8. class MainWindow : public QMainWindow
  9. {
  10. Q_OBJECT
  11. public:
  12. explicit MainWindow(QWidget *parent = 0);
  13. ~MainWindow();
  14. private:
  15. Ui::MainWindow *ui;
  16. QCamera* m_camera;//摄像头设备
  17. };
  18. #endif // MAINWINDOW_H

        main.cpp文件

  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6. MainWindow w;
  7. w.show();
  8. return a.exec();
  9. }

        mainwindow.cpp文件

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4. QMainWindow(parent),
  5. ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. m_camera = new QCamera(this);//初始化摄像头设备
  9. m_camera->setCaptureMode(QCamera::CaptureVideo);//设置捕捉模式为视频
  10. m_camera->setViewfinder(ui->centralWidget);//设置 摄像头画面的显示位置
  11. m_camera->start();//开启摄像头
  12. }
  13. MainWindow::~MainWindow()
  14. {
  15. delete ui;
  16. }

五、总结

        1、使用摄像头相关类QCamera,需要在.pro文件添加:multimediawidgets

      更多请查看帮助文档:

       

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

              

             

                                                                    例子2 显示到widget控件

一、效果 

二、工程结构 

         

         布局

          

三、主要代码

       mainwindow.cpp文件

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4. QMainWindow(parent),
  5. ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. m_camera = new QCamera(this);//初始化摄像头设备
  9. m_camera->setCaptureMode(QCamera::CaptureVideo);//设置捕捉模式为视频
  10. m_camera->setViewfinder(ui->widgetCamera);//设置 摄像头画面的显示位置
  11. }
  12. MainWindow::~MainWindow()
  13. {
  14. delete ui;
  15. }
  16. void MainWindow::on_btnCameraCtrl_clicked()//摄像头开关控制
  17. {
  18. if( (ui->btnCameraCtrl->text() == "开启摄像头") && (m_camera->state() != QCamera::ActiveState) )//未开启状态
  19. {
  20. m_camera->start();//开启摄像头
  21. ui->btnCameraCtrl->setText("关闭摄像头");
  22. }
  23. else
  24. {
  25. m_camera->stop();//关闭摄像头
  26. ui->btnCameraCtrl->setText("开启摄像头");
  27. }
  28. }
  29. void MainWindow::on_btnSnap_clicked()//抓拍
  30. {
  31. if( m_camera->state() == QCamera::ActiveState)//摄像头开启状态下才抓拍
  32. {
  33. QPixmap pixmap = ui->widgetCamera->grab();//将widget内容保存为pixmap图像信息
  34. pixmap.save("Snap.bmp");//保存为Snap.bmp
  35. }
  36. }

四、总结

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

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

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

  1. //包含头文件QCameraInfo
  2. QList<QCameraInfo> cameras = QCameraInfo::availableCameras();//获取可用摄像头设备列表
  3. foreach (const QCameraInfo &cameraInfo, cameras)
  4. {
  5. qDebug()<<cameraInfo.deviceName();//摄像头的设备名称
  6. }

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/806871
推荐阅读
相关标签
  

闽ICP备14008679号