QT中VideoProbe的簡介和實現

一、遇到問題
? ? ? ?在Android機上使用QT進行圖像處理程序設計的時候,遇到的一個比較明顯的問題就是圖片采集的問題----攝像頭獲得是實時的視頻,如果我們想從中動態地截獲圖片,并且轉換成Mat的格式,那么僅僅是靜態的imagecapturee就無法完成,必須要依靠VideoProbe機制。
二、基本情況
我們參考QT的相關文檔:
QVideoProbe class允許你監控正在播放或者記錄的視頻
它的頭文件
#include?<QVideoProbe>
qmake:??? QT?+=?multimedia
Inherits:??? QObject
成員函數
Public Functions
??? QVideoProbe(QObject?*parent?=?Q_NULLPTR)
????~QVideoProbe()
bool???? isActive()?const
bool???? setSource(QMediaObject?*source)
bool???? setSource(QMediaRecorder?*mediaRecorder)

可以發出兩個信號,其中比較重要的是后面一個videoFrameProbed
void???? flush()
void???? videoFrameProbed(const?QVideoFrame?&frame)

? 基本例子,比如打開視頻:

QMediaPlayer?*player?=?new?QMediaPlayer();
QVideoProbe?*probe?=?new?QVideoProbe;
connect(probe, SIGNAL(videoFrameProbed(QVideoFrame)),?this, SLOT(processFrame(QVideoFrame)));
probe->setSource(player);?// Returns true, hopefully.
player->setVideoOutput(myVideoSurface);
player->setMedia(QUrl::fromLocalFile("observation.mp4"));
player->play();?// Start receiving frames as they get presented to myVideoSurface

同樣可以打開QCamera

三、編寫代碼
它的主要結構(流程)是這樣的,我們創建QMl的代碼:
img_708a41f7d0c7e870100d1933269a7fce.png
在qml中生成camera和probe對象。這個probe對象是對原始QVideoProbe的重新封裝,原始的QVideoProbe在
img_bc4cc18d6c1c2277c10eb6a67fc026d5.png
看的更清楚一些
img_2fc816b3502394d8a7727cb291f16894.png

probe對象中,首先通過調用攝像頭,將videoframeprobed信號和processframe槽對應起來。這樣一旦有視頻probed則自動觸發processframe。
img_26d9c6268bd984cd8d5587b3e22727d8.png
注意在這行代碼中
_camera?=?qvariant_cast<QCamera*>(_qmlCamera->property("mediaObject"));
是c++調用qml對象的方法,是將qmlcamera強轉為qcamera的一句
videoFrameProbed是自動觸發的信號,其結果將被processFrame截獲并處理。信號和槽的方式是可以直接帶變量傳遞的。
img_11f308447b5734fc78b9df28791217fe.png
在process中,最主要的步驟就是QVideoFrame格式和Mat格式的轉換。這個目前還沒有非常好的方法,只能在NoHandle模式下進行灰度處理。但是對于圖像處理來說已經能夠解決一些問題。需要注意的是,最后采集的結果,通過
img_c896d7712d776097d37e27a527112d0d.jpe
也就是
img_89135c48a52375abadf07aa9e9468258.png
的模式將其直接推送到qml這里
img_5707343950f4dbefe995ca0ba09312db.png

四、小結
probe這種模式還是比較簡單的,而且經過封裝后能夠很好地和OpenCV結合起來,用于圖像采集處理。



來自為知筆記(Wiz)


目前方向:圖像拼接融合、圖像識別 聯系方式:jsxyhelu@foxmail.com

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284150.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

bzoj2751[HAOI2012]容易題(easy)

bzoj2751[HAOI2012]容易題(easy) 題意&#xff1a; 已知一個數列A對于所有的A[i]都是1~n的自然數&#xff0c;一些A[i]不能取一些值&#xff0c;求出所有可能的數列的積的和 mod 1000000007的值。 題解&#xff1a; 題目中的n≤109實際上是109……首先推個方程s[l,r]s[l,k]*s[k…

WinForm(二):WinFrom中Main函數的入參和出參

基本上有獨立進程的應用&#xff0c;都是以Main函數作為入口&#xff0c;開始運行的。在C#中&#xff0c;Main函數可以無參無返回值&#xff0c;當然也可以是有string[]參數和int返返回值的。WinFrom也滿足這個規則。那么Main作為一個進程的開始函數&#xff0c;那么是誰傳這些…

linux內存回收機制

無論計算機上有多少內存都是不夠的&#xff0c;因而linux kernel需要回收一些很少使用的內存頁面來保證系統持續有內存使用。頁面回收的方式有頁回寫、頁交換和頁丟棄三種方式&#xff1a;如果一個很少使用的頁的后備存儲器是一個塊設備&#xff08;例如文件映射&#xff09;&a…

編譯源碼 JAVA out of memory

轉載于:https://www.cnblogs.com/dyufei/p/6612032.html

安卓 Input Events(輸入事件)

在安卓中&#xff0c;有不止一種方法從你的應用截取用戶交互事件。在你的用戶界面中考慮事件&#xff0c;途徑就是從用戶界面中的一個指定的view對象中捕獲事件。該view提供了這樣做的方法。 在你用來組成你布局的不同的view類中&#xff0c;你或許注意到了一些公共的回調方法似…

【GlobalMapper精品教程】029:柵格重分類案例詳解

重分類就是對原有柵格像元值重新分類從而得到一組新值并輸出。重分類工具有多種方法將像元值重新分類或更改為替代值,Globalmapper提供了柵格重分類的功能。 文章目錄 一、柵格重分類簡介二、柵格重分類案例【參考閱讀】:ArcGIS實驗教程——實驗四十三:ArcGIS柵格重分類(Re…

Mybatis 和 JPA 用哪個好? 優缺點 ?

本文不會下關于 Mybatis 和 JPA 兩個持久層框架哪個更好這樣的結論。只是擺事實&#xff0c;講道理&#xff0c;所以&#xff0c;請各位看官勿噴。 一、事件起因 關于 Mybatis 和 JPA 孰優孰劣的問題&#xff0c;爭論已經很多年了。一直也沒有結論&#xff0c;畢竟每個人的喜…

SkiaSharp 之 WPF 自繪 五環彈動球(案例版)

此案例基于拖曳和彈動球兩個技術功能實現&#xff0c;如有不懂的可以參考之前的相關文章&#xff0c;屬于遞進式教程。五環彈動球好吧&#xff0c;名字是我起的&#xff0c;其實&#xff0c;你可以任意個球進行聯動彈動&#xff0c;效果還是很不錯的&#xff0c;有很多前端都是…

【GlobalMapper精品教程】032:瀏覽地理照片及航線信息(航測應用)

本文講述globalmapper軟件在無人機航測了內業處理中的應用之:瀏覽地理照片及航線信息、相機參數、元數據編輯器。 文章目錄 1. 航線信息瀏覽2. 地理圖像瀏覽2.1 數字化工具2.2 要素信息工具2.3 屬性表3. 照片原數據編輯1. 航線信息瀏覽 打開globalmapper軟件,加載無人機航測…

Spring Boot 2.7.0發布,2.5停止維護

這幾天是Spring版本日&#xff0c;很多Spring工件都發布了新版本&#xff0c; Spring Framework 6.0.0 發布了第 4 個里程碑版本&#xff0c;此版本包含所有針對 5.3.20 的修復補丁&#xff0c;以及特定于 6.0 分支的 39 項修復和改進。而今天Spring Boot 2.7.0和Spring Securi…

【GlobalMapper精品教程】031:Globalmapper在航測內業數據處理中的應用舉例

Globalmapper在航測內業數據處理中的應用舉例索引。 文章目錄 1. 圖像及航線瀏覽2. 3D重建3. 點云分類4. 創建地形5. 地形分析1. 圖像及航線瀏覽 擴展閱讀:【GlobalMapper精品教程】032:瀏覽地理照片及航線信息(航測應用) 2. 3D重建 從Global Mapper的19版本開始,Pixels-…

移動工具V和選區工具M

移動工具快捷鍵&#xff1a;V 屬性&#xff1a; 自動選擇 在默認情況下&#xff0c;移動工具的“自動選擇”一項是沒有勾選的。表示只能選中圖層窗口中選定的固定圖層&#xff0c;不能隨意的點擊選擇別的圖層。在這里&#xff0c;我們也勾選“自動選擇”&#xff0c;可任意選擇…

SeleniumWebDriver擴展插件開發

Selenium WebDriver 是一組開源 API&#xff0c;用于自動測試 Web 應用程序&#xff0c;利用它可以通過代碼來控制chrome edge等瀏覽器&#xff01;有時候我們需要mock接口的返回&#xff0c;或者攔截和轉發請求&#xff0c;今天就來實現這個功能本插件代碼已開源&#xff1a;h…

ZooKeeper的工作原理

ZooKeeper是一個分布式的應用程序協調服務。 2 ZooKeeper的工作原理 Zookeeper 的核心是原子廣播&#xff0c;這個機制保證了各個Server之間的同步。實現這個機制的協議叫做Zab(Zookeeper Atomic Broadcast)協議。Zab協議有兩種模式&#xff0c;它們分別是恢復模式&#xff08;…

memcache的學習路線圖

memcache學習材料//memcache自帶的github 上的 wiki//席劍飛 Memcache&#xff08;MC&#xff09;系列 1~8系列評注&#xff1a; memcache系統寫的最深的一博客&#xff0c;建議一讀。http://blog.csdn.net/xifeijian/article/details/21994941//mysql與memcache的使用https://…

[轉]錢嶺:別擔心“35歲危機”,要成為“老專家”

從清華大學到貝爾實驗室&#xff0c;再到中國移動&#xff0c;作為“IT老人”&#xff0c;錢嶺的技術人生幾乎覆蓋了20世紀90年代至今的信息產業革命。2007年開始&#xff0c;錢嶺在中國移動經歷了基礎科研到產品落地&#xff0c;再到團隊孵化&#xff1b;也經歷了云計算從無到…

【GIS前沿】周成虎院士:GIS的大數據時代展望(PPT分享)

本文源自微信公眾號&#xff1a;宋關福GIS筆記。版權歸原作者及刊載媒體所有&#xff0c;如有侵權請立即與我們聯系,我們將及時處理。更多GIS前言技術&#xff0c;請關注《GIS前言》專欄。 GIS的大數據時代展望

DataV:可視化大屏展示神器實戰分享

由于公司年即將發布新的產品&#xff0c;傳統意義上的PPT顯得不太生動化&#xff0c;所以想采用具體化&#xff0c;可視化的數據大屏進行業務數據的事實展示&#xff0c;第一時間想到了來自于阿里云旗下的DataV&#xff0c;廢話不多說&#xff0c;老司機開始發牌照&#xff01;…

數據庫性能系列之索引(中)

GOOD NIGHT前言上一篇中&#xff0c;我們已經了解到了索引的基本概念和一些用法。那索引為什么會提升查詢的速度&#xff0c;以及索引究竟是怎么工作的呢&#xff1f;也許大家心里還是有一些迷茫&#xff0c;這一切&#xff0c;還要從索引背后的算法說起。GOOD NIGHT概述大家知…