最近在做目标跟踪相关的项目,使用到OpenCV库的一个函数叫做cvRunningAvg。下面我对cvRunningAvg函数的使用做一个简单的描述,然后提供一个我应用于自身项目的一个背景移动平均函数。
cvRuningAvg函数的声明如下:
void cvRunningAvg(const CvArr * image, CvArr* acc, double alpha, const CvArr* mask=NULL)
参数说明:
image:输入图像或序列
acc: 用于累加的图像或序列
alpha:移动平均时image所占的权重
mask:操作符掩码
这个函数的操作结果是将image的值按照alpha权重累加到acc上。alpha这个参数作用通俗的讲就是告诉程序,我要多快的忘记前面的图像帧,将当前帧更快的融入背景中。
我以前在使用这个函数的时候碰到一次程序运行错误,我相信很多初次使用者都容易犯这个错误。就是函数的两个参数image和acc都必须是float类型的,如果输入参数image是uchar类型的,就会发生运行错误。比如如果创建了一个如下图像参数: