这篇文章主要讲解了“Qt6如何实现调用摄像头并显示画面”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Qt6如何实现调用摄像头并显示画面”吧!1、Cmake环境CmakeLists.txt添加
这篇文章主要讲解了“Qt6如何实现调用摄像头并显示画面”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Qt6如何实现调用摄像头并显示画面”吧!
CmakeLists.txt添加
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)find_package(Qt${QT_VERSioN_MAJOR} REQUIRED COMPONENTS Widgets)find_package(Qt6 COMPONENTS Multimedia REQUIRED)find_package(Qt6 COMPONENTS MultimediaWidgets REQUIRED) target_link_libraries(samon1 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)target_link_libraries(samon1 PRIVATE Qt6::Multimedia)target_link_libraries(samon1 PRIVATE Qt6::MultimediaWidgets)set_target_properties(samon1 PROPERTIES
这个samon1是我工程目录的文件名,具体请根据自己的工程目录名和CmakeLists配置而定。
文件调用记得修改名称
set(PROJECT_SOURCES main.cpp camera.cpp camera.h camera.ui)
qmake编译环境请自行根据调用头文件查找Qt手册。
main.cpp
#include <QApplication>//Qt必要头文件 #include "camera.h"//摄像头 int main(int arGC, char *argv[]){ QApplication a(argc, argv);//Qt初始化 Camera w;//创建窗口类 w.setWindowTitle("Camera");//设置窗口标题 w.show();//显示窗口 return a.exec();//程序结束}
camera.cpp
#include "camera.h"//摄像头#include "./ui_camera.h"//CMakeLists.txt构建后产生文件 Camera::Camera(QWidget *parent) : QMainWindow(parent) , ui(new Ui::Camera){ ui->setupUi(this); //qDebug("Camera Device Check:%d",Camera::checkCameraAvailability());//摄像头驱动检测debug测试 my_camera.reset(new QCamera(QMediaDevices::defaultVideoInput()));//新建并设置摄像头使用默认驱动 my_captureSession.setCamera(my_camera.data());//捕获摄像头画面 my_captureSession.setVideoOutput(ui->viewfinder);//设置捕捉画面显示窗口 my_camera->start();//启动摄像头 } //检测摄像头驱动能否识别bool Camera::checkCameraAvailability(){ if (QMediaDevices::videoInputs().count() > 0) return true;//检测到摄像头驱动 else return false;//没有检测到摄像头驱动} //消类Camera::~Camera(){ delete ui;}
camera.h
//icysamon@outlook.com #ifndef CAMERA_H#define CAMERA_H #include <QMainWindow>#include <QCamera>#include <QVideoWidget>#include <QMediaCaptureSession>#include <QMediaDevices>#include <QImageCapture>#include <QMediaRecorder> QT_BEGIN_NAMESPACEnamespace Ui { class Camera; }QT_END_NAMESPACE class Camera : public QMainWindow{ Q_OBJECT public: Camera(QWidget *parent = nullptr); ~Camera(); private: Ui::Camera *ui; QScopedPointer<QCamera> my_camera; QScopedPointer<QMediaRecorder> my_mediaRecorder; QMediaCaptureSession my_captureSession; bool checkCameraAvailability(void); };#endif // CAMERA_H
camera.ui
<?xml version="1.0" encoding="UTF-8"?><ui version="4.0"> <class>Camera</class> <widget class="QMainWindow" name="Camera"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>762</width> <height>567</height> </rect> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QVideoWidget" name="viewfinder"/> <widget class="QMenuBar" name="menubar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>762</width> <height>26</height> </rect> </property> </widget> <widget class="QStatusBar" name="statusbar"/> </widget> <customwidgets> <customwidget> <class>QVideoWidget</class> <extends>QWidget</extends> <header location="global">qvideowidget.h</header> <container>1</container> </customwidget> </customwidgets> <resources/> <connections/></ui>
ui设计界面类关系如图所示
以QMainWindow为父类建立子类Camera
以QVedioWidget为父类建立子类viewfinder
最后编译运行,就能实现一个纯视频的窗口,有关摄像头程序的截屏涉及个人隐私,故不做展示。
感谢各位的阅读,以上就是“Qt6如何实现调用摄像头并显示画面”的内容了,经过本文的学习后,相信大家对Qt6如何实现调用摄像头并显示画面这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
--结束END--
本文标题: Qt6如何实现调用摄像头并显示画面
本文链接: https://www.lsjlt.com/news/349967.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-05
2024-05-05
2024-05-05
2024-05-05
2024-05-05
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0