这篇文章主要介绍了C++ OpenCV视频操作之如何实现稠密光流对象跟踪,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联服务项目包括裕安网站建设、裕安网站制作、裕安网页制作以及裕安网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,裕安网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到裕安省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
前言
稠密光流算法(即图像上所有像素点的光流都计算出来),由于要计算图像上所有点的光流,故计算耗时,速度慢。一般来说我们在平时应用上可能会用到的比较少,在这里我们就简单讲解一下。
函数API
void cv::calcOpticalFlowFarneback( InputArray _prev0, InputArray _next0, OutputArray _flow0, double pyr_scale, int levels, int winsize, int iterations, int poly_n, double poly_sigma, int flags )
参数说明如下:
InputArray :输入前一帧图像
InputArray :输入后一帧图像
OutputArray :输出的光流
double:金字塔上下两层之间的尺度关系
int :金字塔层数
int:均值窗口大小,越大越能denoise并且能够检测快速移动目标,但会引起模糊运动区域
int:迭代次数
int:像素领域大小,一般为5,7等
double:高斯标注差,一般为1-1.5
int:计算方法。主要包括OPTFLOW_USE_INITIAL_FLOW和OPTFLOW_FARNEBACK_GAUSSIAN
代码实现
我们再新建一个项目名为opencv--video4,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法
先在外层读取第一帧图像
读取图像并时行稠密光流计算,下图红框内就是用到了我们的API,明显可以看出来这里比稀疏光流要简单些,因为不用再先获取特征点进行对比了,下面的蓝色框就是我们绘制结果的函数
代码结尾
绘制结果的函数
这样整个就完成了,文章开头的视频就是我们运行起来的效果,下面是视频中的截图
感谢你能够认真阅读完这篇文章,希望小编分享的“C++ OpenCV视频操作之如何实现稠密光流对象跟踪”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!
分享名称:C++OpenCV视频操作之如何实现稠密光流对象跟踪
本文URL:http://lswzjz.com/article/ihcoij.html