当前位置: 首页 > 科技 > 人工智能 > opencv教程-目标跟踪_腾讯新闻

opencv教程-目标跟踪_腾讯新闻

天乐
2020-12-24 05:55:08 第一视角

1:MeanShift算法

retval, window=cv.meanShift(probImage, window, criteria)

参数probImage:当前图像反向投影图

参数window:前一图像目标框

参数criteria:迭代停止条件

算法原理:属于核密度估计算法,向密度最大的方向移动(反向投影就是一种概率密度图,颜色亮的地方密度高,与目标物体更相似);基于矩形框的中心和矩形框内反向投影图的质心进行移动(中心向质心移动),直到达到迭代停止条件,则会得到新的位置框。

基本流程:

(1)选定目标框。

(2)根据色调或灰度值来设定条件,目的是为了提取目标区域,因为矩形框一般会包含有背景,会对后面的反向投影有较大影响;比如下面示例中人物穿的黑色衣服,背景地是白色,就可以设定灰度范围[0,100]来过滤掉地的影响。

(3)计算目标框内目标的直方图,并对直方图进行归一化[0,255]。

(4)对于每一帧,基于目标直方图计算反向投影。

(5)对于每一帧,基于当前帧的反向投影调用meanShift算法得到新的目标矩形框。

(6)重复(4)、(5)知道视频结束。

上述第一张图是要跟踪的目标图和目标区域标记图,第二幅图是跟踪图和反向投影图。

2:CamShift算法

retval, window=cv.CamShift(probImage, window, criteria)

算法原理:每帧基于MeanShift算法的结果计算新的窗体,然后每帧都重复该操作;所以该算法的目标框是大小变化的,而且是不同角度的矩形框,这与上述算法不同。

说实话,opencv提供的上述算法效果很一般,自己学习或者做简单的应用可以,但用在实际项目中就不合适了,满足不了项目需求,但因为是没有用到训练模型,只是单纯的基于算法进行逐帧计算,所以速度很快,效果也就不要太过强求了,想要一个好的跟踪算法最好是做目标识别然后再跟踪,所以这里以学习为主。

提示:支持键盘“← →”键翻页
为你推荐
加载更多
意见反馈
返回顶部