当前位置: 首页 > java >正文

学习OpenCV2——MeanShift之目标跟踪

        前面学习了MeanShift用于目标检测,现在来看看MeanShift如何用于目标跟踪。

        OpenCV里的MeanShift跟踪方法涉及图像矩和反向投影的知识,如果不清楚可以先看我的另一篇博文“图像的几何矩”


1. MeanShift( )跟踪的流程

        MeanShift是个迭代的算法,每次迭代会往概率密度大的方向移动,所以MeanShift算法得用在概率密度图上,而反向投影图就是一个典型的颜色概率密度图。下图是

meanshift算法的流程图。

                                                                               

图画麻烦了,其实编程很简单。

初始化:计算目标区域rect0的直方图hist0。

跟   踪:根据目标直方图hist0,计算整个搜索区域的反向投影图prohist1;

              给定目标起始区域rect和终止条件,在反向投影图prohist1上调用meanshift函数,得到最终区域rectN。


2. cvMeanShift( )详解

OpenCV中进行MeanShift跟踪的函数是cvMeanShift( )。

函数原型见  ..\OpenCV249\sources\modules\video\src\camshift.cpp

int cvMeanShift( const void* imgProb,             //输入概率密度图CvRect windowIn,                 //初始目标区域CvTermCriteria criteria,         //迭代终止条件CvConnectedComp* comp )          //可选条件,表示连通域结构体

函数有返回值,返回的是迭代次数,而这个windowIn则是最终目标区域。

CV_IMPL int
cvMeanShift( const void* imgProb, CvRect windowIn,CvTermCriteria criteria, CvConnectedComp* comp )
{//CvMoments是个结构体,存的是图像矩CvMoments moments;int    i = 0, eps;CvMat  stub, *mat = (CvMat*)imgProb;CvMat  cur_win;CvRect cur_rect = windowIn;CV_FUNCNAME( "cvMeanShift" );//初始化跟踪窗口if( comp )comp->rect = windowIn;//把0阶矩和1阶矩先初始化置零moments.m00 = moments.m10 = moments.m01 = 0;__BEGIN__;CV_CALL( mat = cvGetMat( mat, &stub ));  //返回矩阵头,stub是临时值//各种输入变量不符合要求时显示错误信息if( CV_MAT_CN( mat->type ) > 1 )CV_ERROR( CV_BadNumChannels, cvUnsupportedFormat );if( windowIn.height <= 0 || windowIn.width <= 0 )CV_ERROR( CV_StsBadArg, "Input window has non-positive sizes
http://www.xdnf.cn/news/11408.html

相关文章:

  • 常用CSS样式大全(超全面)
  • php探针代码怎么写
  • 女性英文名對照及涵意大全
  • RocketMQ 负载均衡,消息重试
  • Scrapy项目(东莞阳光网)---利用CrawlSpider爬取贴子内容,不含图片
  • Linux Vim最全面的教程——全网最详细
  • Cisco Packet Tracer安装指南
  • HTML实例网页代码 简单的个人博客网站设计与实现 (div+css)
  • 111111111111111111111111
  • Colours–颜色库,包含100种预定义的颜色和方法
  • 嵌入式开发中的硬件滤波器设计和软件滤波设计
  • C盘如何格式化?格式化C盘的方法介绍
  • 用友OA U8 test.jsp sql注入漏洞复现
  • ARM嵌入式系统设计(Cortex-M3))一课一得之STM32开发板
  • java实现操作PDFlib库实例(附完整源码)
  • 黑客工具软件大全100套(非常详细)从零基础入门到精通,看完这一篇就够了
  • java四舍五入
  • 什么是scrum里的3355
  • PHP中 stripslashes() 函数 和 addslashes() 函数
  • 2024计算机最吃香的几大专业,哪些好就业?
  • 对于过滤器中使用getInputStream()、getParameter()接收参数接收不到的一些知识,以及解决方法。
  • TLSF算法概念,原理,内存碎片问题分析
  • UML 类关系(详解)——依赖、关联、聚合、组合、泛化
  • “IT小百科”之“电脑开机密码忘记了怎么办”
  • mentohust 使用
  • 打造优质的灵修生活
  • ActiveSync同步使用方法
  • OGG|Oracle GoldenGate 基础知识介绍(二)
  • 介绍一个很不错的电影网站
  • css实现两端对齐的3种方法