您好,登錄后才能下訂單哦!
這篇文章主要講解了“Qt6如何實(shí)現(xiàn)調(diào)用攝像頭并顯示畫(huà)面”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Qt6如何實(shí)現(xiàn)調(diào)用攝像頭并顯示畫(huà)面”吧!
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
這個(gè)samon1是我工程目錄的文件名,具體請(qǐng)根據(jù)自己的工程目錄名和CmakeLists配置而定。
文件調(diào)用記得修改名稱
set(PROJECT_SOURCES main.cpp camera.cpp camera.h camera.ui )
qmake編譯環(huán)境請(qǐng)自行根據(jù)調(diào)用頭文件查找Qt手冊(cè)。
main.cpp
#include <QApplication>//Qt必要頭文件 #include "camera.h"//攝像頭 int main(int argc, char *argv[]) { QApplication a(argc, argv);//Qt初始化 Camera w;//創(chuàng)建窗口類 w.setWindowTitle("Camera");//設(shè)置窗口標(biāo)題 w.show();//顯示窗口 return a.exec();//程序結(jié)束 }
camera.cpp
#include "camera.h"//攝像頭 #include "./ui_camera.h"//CMakeLists.txt構(gòu)建后產(chǎn)生文件 Camera::Camera(QWidget *parent) : QMainWindow(parent) , ui(new Ui::Camera) { ui->setupUi(this); //qDebug("Camera Device Check:%d",Camera::checkCameraAvailability());//攝像頭驅(qū)動(dòng)檢測(cè)debug測(cè)試 my_camera.reset(new QCamera(QMediaDevices::defaultVideoInput()));//新建并設(shè)置攝像頭使用默認(rèn)驅(qū)動(dòng) my_captureSession.setCamera(my_camera.data());//捕獲攝像頭畫(huà)面 my_captureSession.setVideoOutput(ui->viewfinder);//設(shè)置捕捉畫(huà)面顯示窗口 my_camera->start();//啟動(dòng)攝像頭 } //檢測(cè)攝像頭驅(qū)動(dòng)能否識(shí)別 bool Camera::checkCameraAvailability() { if (QMediaDevices::videoInputs().count() > 0) return true;//檢測(cè)到攝像頭驅(qū)動(dòng) else return false;//沒(méi)有檢測(cè)到攝像頭驅(qū)動(dòng) } //消類 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_NAMESPACE namespace 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設(shè)計(jì)界面類關(guān)系如圖所示
以QMainWindow為父類建立子類Camera
以QVedioWidget為父類建立子類viewfinder
最后編譯運(yùn)行,就能實(shí)現(xiàn)一個(gè)純視頻的窗口,有關(guān)攝像頭程序的截屏涉及個(gè)人隱私,故不做展示。
感謝各位的閱讀,以上就是“Qt6如何實(shí)現(xiàn)調(diào)用攝像頭并顯示畫(huà)面”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Qt6如何實(shí)現(xiàn)調(diào)用攝像頭并顯示畫(huà)面這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。