多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Qt--windows平臺上如何獲取qml中Camera的數據

Qt--windows平臺上如何獲取qml中Camera的數據

來源:程序員人生   發布時間:2016-12-20 16:29:57 閱讀次數:3437次

曾寫了1個博客:
我們為何不習慣使用qml? 最后有1個懸念,到底如何在C++代碼中獲得qml中camera的數據呢?

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.

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

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

寫1個自己的類叫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; }

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

emit m_filter->cameraFrameSignal(cloneFrame);

我們自己寫1個slot,然后對Frame進行相應的處理!

接下來才是高潮!!!!

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

在C++中注冊:

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

在qml中導入:

import CameraFilter 1.0

第2步、在qml中干點大事兒:

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 }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: www.夜| 手机在线成人精品视频网 | 91精品一区二区 | 亚洲人成网亚洲欧洲无码 | 美美女高清毛片视频黄的一免费 | 久久精品国产亚洲麻豆 | 可以看黄的网址 | 九月丁香激情综合婷婷玉立 | 国产精品久久久久激情影院 | 国产成人综合一区人人 | 久久www免费人成精品 | 免费人成毛片乱码 | 国产成人91一区二区三区 | 国产中的精品一区的 | 91人人区免费区人人 | 免费国产在线视频 | 精品日韩| 国产亚洲天堂 | 视频www| 欧美一区二区三区免费不卡 | 337p粉嫩日本大胆艺术 | 国产二区精品 | 欧美一区二区三区精品 | 最近高清无吗免费看 | 欧美黑人猛烈ⅹxxx 欧美黑人喷潮水xxxx | 久久精品国产99久久久 | 91午夜精品亚洲一区二区三区 | 图片区小说区av区 | 亚洲天堂一区二区 | 最近高清中文字幕大全免费1 | 一二区 | 欧美v亚洲 | 日韩欧美一区二区三区在线观看 | 最近免费中文字幕高清大全 | 中文字幕在线视频第一页 | 国产日韩一区二区 | 波多野结衣在线观看一区二区三区 | 九色网址 | 伊人伊人影院 | 欧美日韩国产色综合一二三四 | 国产日产高清欧美一区二区三区 |