網(wǎng)站首頁 編程語言 正文
1、Cmake環(huán)境
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是我工程目錄的文件名,具體請根據(jù)自己的工程目錄名和CmakeLists配置而定。
文件調(diào)用記得修改名稱
set(PROJECT_SOURCES
main.cpp
camera.cpp
camera.h
camera.ui
)
qmake編譯環(huán)境請自行根據(jù)調(diào)用頭文件查找Qt手冊。
2、源代碼
main.cpp
#include <QApplication>//Qt必要頭文件
#include "camera.h"http://攝像頭
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"http://攝像頭
#include "./ui_camera.h"http://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ū)動檢測debug測試
my_camera.reset(new QCamera(QMediaDevices::defaultVideoInput()));//新建并設(shè)置攝像頭使用默認(rèn)驅(qū)動
my_captureSession.setCamera(my_camera.data());//捕獲攝像頭畫面
my_captureSession.setVideoOutput(ui->viewfinder);//設(shè)置捕捉畫面顯示窗口
my_camera->start();//啟動攝像頭
}
//檢測攝像頭驅(qū)動能否識別
bool Camera::checkCameraAvailability()
{
if (QMediaDevices::videoInputs().count() > 0)
return true;//檢測到攝像頭驅(qū)動
else
return false;//沒有檢測到攝像頭驅(qū)動
}
//消類
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è)計界面類關(guān)系如圖所示
- 以QMainWindow為父類建立子類Camera
- 以QVedioWidget為父類建立子類viewfinder
最后編譯運行,就能實現(xiàn)一個純視頻的窗口,有關(guān)攝像頭程序的截屏涉及個人隱私,故不做展示。
原文鏈接:https://blog.csdn.net/m0_60259116/article/details/129186650
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2023-03-01 Gorm更新零值問題解決思路與過程_Golang
- 2022-04-12 Windows11右鍵菜單恢復(fù)Windows10樣式
- 2022-08-20 在?pytorch?中實現(xiàn)計算圖和自動求導(dǎo)_python
- 2022-11-26 使用HttpClient消費ASP.NET?Web?API服務(wù)案例_實用技巧
- 2022-05-25 Python小游戲?qū)崿F(xiàn)實例之接蘋果_python
- 2022-04-10 element input輸入框千分位無法回顯問題解決方法
- 2022-04-11 python寫入Excel表格的方法詳解_python
- 2022-09-06 .net6?使用Senparc開發(fā)小程序配置過程_實用技巧
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支