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.mzph.cn/news/284150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WinForm(二):WinFrom中Main函数的入参和出参

基本上有独立进程的应用&#xff0c;都是以Main函数作为入口&#xff0c;开始运行的。在C#中&#xff0c;Main函数可以无参无返回值&#xff0c;当然也可以是有string[]参数和int返返回值的。WinFrom也满足这个规则。那么Main作为一个进程的开始函数&#xff0c;那么是谁传这些…

编译源码 JAVA out of memory

转载于:https://www.cnblogs.com/dyufei/p/6612032.html

【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软件,加载无人机航测…

【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…

[转]钱岭:别担心“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概述大家知…

微服务架构的设计原则和核心话题

目录 一、前言 二、微服务架构的设计原则 1.拆分足够微 2.轻量级通信 3.单一职责原则 4.领域驱动原则 三、微服务架构的核心话题 1.服务拆分 2.服务注册与发现 3.负载均衡 4.API网关 5.服务部署与发布 四、总结 一、前言 毫无疑问&#xff0c;微服务架构的设计原…

Golang GOPATH 包

2019独角兽企业重金招聘Python工程师标准>>> Golang GOPATH & 包的定义 & 包的导入 GOPATH 设置 go 命令依赖一个重要的环境变量&#xff1a;$GOPATH 可以在 .zshrc 配置文件中加上一行这样的配置&#xff0c; export GOPATH/Users/flyme/mygo Go从1.1版本到…

PPK大疆无人机应用教程

文章目录 一、新建项目二、导入数据三、解算过程四、结果导出一、新建项目 新建工程,设置项目名称,保存位置,控制等级,坐标系统(坐标系统选择高斯克吕格,中央子午线根据实际数据所在位置进行选择) 二、导入数据 选择大疆数据,找到对应的文件夹 数据有:图片,EVENT.b…

Eclipse Add generated serial version ID报错解决方案

为什么80%的码农都做不了架构师&#xff1f;>>> 问题&#xff1a; The following problem occurred:Could not find class file.Make sure the file is compilable 解决方案&#xff1a; 1、右键项目 -> Java Build Path -> Source 在Sourcd folders on bui…

C# WPF设备监控软件(经典)-上篇

01—前言应老东家也是老同学的需求&#xff0c;开发了此设备监控软件。主要是为了应对测试设备长时间不上传测试数据未能及时发现的问题&#xff0c;测试数据一般在每台设备都有个固定的临时存放目录&#xff0c;测试数据不更新时&#xff0c;此文件夹便不再更新。需求相对比较…

[转]微服务的4个设计原则和19个解决方案

目录 一、微服务架构演进过程 二、微服务架构的好处 三、微服务应用4个设计原则 1.AKF拆分原则 2.前后端分离 3.无状态服务 4.Restful通信风格 四、微服务架构带来的问题 五、微服务平台的19个落地实践 1.企业IT建设的三大基础环境 2.微服务应用平台总体架构 3.微服…