在做目标跟踪的时候,mean sift算法是堪称经典,在opencv2.4.6中,mean sift的函数原型为如下:
/ /! updates the object tracking window using meanshift algorithm
CV_EXPORTS_W int meanShift( InputArray probImage, CV_OUT CV_IN_OUT Rect& window, TermCriteria criteria );
其中,probImage:在目标跟踪时,probImage表示我们待搜索目标图像的反向投影图(概率分布图),其实就是一幅图像
window:是初始矩形框大小,这里它既是输入,又是输出
criteria:迭代搜索的准则(如需要迭代的次数和需要控制最小值)
在opencv2.4.6中,我们可以看到meanShift的源代码如下:
int cv::meanShift( InputArray _probImage, Rect& window, TermCriteria criteria )
{
CvConnectedComp comp;
Mat probImage = _probImage.getMat(); //getMat()函数将传入的参数转换为Mat的结构,方便你函数内的操作
CvMat c_probImage = probImage;
int iters = cvMeanShift(&c_probImage, window, (CvTermCriteria)criteria, &comp );
window = comp.rect; //更新窗口
return iters; //返回迭代次数