博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT中VideoProbe的简介和实现
阅读量:7183 次
发布时间:2019-06-29

本文共 1570 字,大约阅读时间需要 5 分钟。

一、遇到问题
       在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的代码:
508489-20180213202406046-1909662542.png
在qml中生成camera和probe对象。这个probe对象是对原始QVideoProbe的重新封装,原始的QVideoProbe在
508489-20180213202406640-1320284601.png
看的更清楚一些
508489-20180213202408234-77982687.png
probe对象中,首先通过调用摄像头,将videoframeprobed信号和processframe槽对应起来。这样一旦有视频probed则自动触发processframe。
508489-20180213202409406-1084350205.png
注意在这行代码中
_camera = qvariant_cast<QCamera*>(_qmlCamera->property("mediaObject"));
是c++调用qml对象的方法,是将qmlcamera强转为qcamera的一句
videoFrameProbed是自动触发的信号,其结果将被
processFrame截获并处理。信号和槽的方式是可以直接带变量传递的。
508489-20180213202411718-1154541759.png
在process中,最主要的步骤就是QVideoFrame格式和Mat格式的转换。这个目前还没有非常好的方法,只能在NoHandle模式下进行灰度处理。但是对于图像处理来说已经能够解决一些问题。需要注意的是,最后采集的结果,通过
508489-20180213202412031-900813730.jpg
也就是
508489-20180213202412374-663327034.png
的模式将其直接推送到qml这里
508489-20180213202413031-59373917.png
四、小结
probe这种模式还是比较简单的,而且经过封装后能够很好地和OpenCV结合起来,用于图像采集处理。

转载地址:http://gmukm.baihongyu.com/

你可能感兴趣的文章
Linux 必会
查看>>
HTML骨架结构
查看>>
【哈希表】CodeVs1230元素查找
查看>>
自定义上传图片样式并实现上传立即展示该图片
查看>>
通达OA 自定义菜单
查看>>
Excutors 线程池
查看>>
BootStrap的table技术小结:数据填充、分页、列宽可拖动
查看>>
用HTML做的简单的个人简历
查看>>
MySQL高级 之 order by、group by 优化
查看>>
POJ3320:Jessica's Reading Problem(尺取法)
查看>>
Mysql学习——安装登录
查看>>
React-nwb的使用
查看>>
【人生思考】2015读书清单
查看>>
Vim的多窗口模式管理
查看>>
Android:EditText 设置弹出数字输入法键盘
查看>>
[Windows]Visual Studio Code个人配置
查看>>
防错笔记
查看>>
bzoj3232圈地游戏——0/1分数规划+差分建模+判环
查看>>
计算程序运行时间
查看>>
js 和后台交互
查看>>