CVMEANSHIFT算法可以分为以下4步:
1.选择窗的大小和初始位置.
2.计算此时窗口内的Mass Center.
3.调整窗口的中心到Mass Center.
4.重复2和3,直到窗口中心"会聚",即每次窗口移动的距离小于一定的阈值,或者迭代次数达到设定值。
cv库里的函数说明参考http://blog.csdn.net/sunboyiris/article/details/23290675
/* Implements MeanShift algorithm - determines object position
from the object histogram back project */
CVAPI(int) cvMeanShift( const CvArr* prob_image, CvRect window,
CvTermCriteria criteria, CvConnectedComp* comp );
在opencv的sample 库里,拉出camshiftdemo源码,将cvCamShift函数改成一下源码:
cvMeanShift( backproject, track_window,
cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ),
&track_comp );
cout<<track_comp.rect.height<<endl<<track_comp.rect.width<<endl<<track_comp.rect.x<<endl<<track_comp.rect.y<<endl;
cout<<track_comp.value.val<<endl;
测试通过,输出ROI区域信息。