日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > php教程 > Qt--windows平臺(tái)上如何獲取qml中Camera的數(shù)據(jù)

Qt--windows平臺(tái)上如何獲取qml中Camera的數(shù)據(jù)

來(lái)源:程序員人生   發(fā)布時(shí)間:2016-12-20 16:29:57 閱讀次數(shù):3424次

曾寫了1個(gè)博客:
我們?yōu)楹尾涣?xí)慣使用qml? 最后有1個(gè)懸念,到底如何在C++代碼中獲得qml中camera的數(shù)據(jù)呢?

QAbstractVideoFilter
The QAbstractVideoFilter class represents a filter that is applied to the video frames received by a VideoOutput type.
https://doc-snapshots.qt.io/qt5-dev/qabstractvideofilter.html#details

QVideoFilterRunnable
The QVideoFilterRunnable class represents the implementation of a filter that owns all graphics and computational resources, and performs the actual filtering or calculations.

上面兩個(gè)類自己去看官方文檔吧,翻譯不好。

開始擼代碼!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

寫1個(gè)自己的類叫CameraFilter吧:

camerafilter.h

#ifndef CAMERAFILTER #define CAMERAFILTER #include <QVideoFilterRunnable> class CameraFilter : public QAbstractVideoFilter { Q_OBJECT public: CameraFilter(); ~CameraFilter(); QVideoFilterRunnable *createFilterRunnable(); private: signals: void finished(QObject *result); void cameraFrameSignal(QVideoFrame); public slots: }; class CameraFilterRunnable : public QVideoFilterRunnable { public: CameraFilterRunnable(CameraFilter* filter = NULL); ~CameraFilterRunnable(); QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags); private: CameraFilter *m_filter; }; #endif // CAMERAFILTER

camerafilter.cc

#include "camerafilter.h" #include "qdebug.h" CameraFilter::CameraFilter() { } CameraFilter::~CameraFilter() { } QVideoFilterRunnable *CameraFilter::createFilterRunnable() { return new CameraFilterRunnable(this); } CameraFilterRunnable::CameraFilterRunnable(CameraFilter* filter) { m_filter = filter; } CameraFilterRunnable::~CameraFilterRunnable() { } QVideoFrame CameraFilterRunnable::run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) { QVideoFrame cloneFrame(*input); emit m_filter->cameraFrameSignal(cloneFrame); return cloneFrame; }

不要罵娘,上面的代碼很簡(jiǎn)單的,其實(shí)官方的文檔中也有類似的代碼片斷,不懂的自己看奧。
是通過:

emit m_filter->cameraFrameSignal(cloneFrame);

我們自己寫1個(gè)slot,然后對(duì)Frame進(jìn)行相應(yīng)的處理!

接下來(lái)才是高潮!!!!

第1步、讓qml中理解我們自己的類CameraFilter(Defining QML Types from C++) :

在C++中注冊(cè):

qmlRegisterType<CameraFilter>("CameraFilter", 1, 0, "CameraFilter");

在qml中導(dǎo)入:

import CameraFilter 1.0

第2步、在qml中干點(diǎn)大事兒:

Camera { objectName: "CameraObject" id: camera imageProcessing.whiteBalanceMode: CameraImageProcessing.WhiteBalanceFlash exposure { exposureCompensation: -1.0 exposureMode: Camera.ExposurePortrait } captureMode: Camera.CaptureVideo flash.mode: Camera.FlashRedEyeReduction } VideoOutput { width: 160 height: 90 id: video_output objectName: "VidelOutputObject" source: camera anchors.fill: parent focus : visible // to receive focus and capture key events when visible visible: false filters: [filter] fillMode: VideoOutput.PreserveAspectFit } CameraFilter { objectName: "cameraFilterObject" id: filter }
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久久久国产精品免费免费搜索 | 国产在线观看 | 国产成人午夜精品5599 | 欧美日韩中文字幕在线视频 | 亚洲国产美女 | 国产一级片在线播放 | 久久久久久影视 | 久久最新 | 麻豆视频网 | 精品成人免费一区二区在线播放 | 日韩欧美中文 | 精品一区在线 | 激情欧美亚洲 | 午夜精彩视频 | 一区二区三区欧美在线 | 日韩色在线 | 亚洲欧美日韩一区 | 亚洲 自拍 另类 欧美 丝袜 | 亚洲国产高清视频 | 一区二区三区日韩欧美 | 成人午夜天 | 日韩在线视频中文字幕 | 亚州三级 | 久久久亚洲精品视频 | 99成人精品 | 99精品视频在线观看 | 欧美日韩国产在线 | 成人午夜小视频 | 久久性 | 国产永久免费 | 日韩影院在线 | 久久人人爽爽爽人久久久 | 欧美在线一区二区三区 | 国产精品9 | 国产精品久久久久久亚洲调教 | 中文字幕在线观看一区二区三区 | 亚洲伊人网站 | 亚洲最新av | 一区二区三区在线 | 国产精品网站视频 | 午夜精品久久久久久久99 |