CAMShift
OpenCV
提供了CamShift
函数用于目标跟踪. 其全称为Continuously Adaptive Meanshift
是由Gary Bradsky于1988年提出的,论文为”Computer Vision Face Tracking for Use in a Perceptual User Interface”.
CamShift
是基于MeanShift
算法的,相较MeanShift
能够动态调整追踪窗口的大小,将上一帧作为下一帧追踪计算的初始值,效果更好.
CamShift
计算前需要首先进行以下步骤:
将RGB图像转换为HSV图像;
计算图像直方图,并归一化,得到Color probability Image;
设置CamShift参数.
然后在每帧执行以下步骤:
将RGB图像转换为HSV图像;
计算BackProject;
计算CamShift.
CamShift
在OpenCV中的函数形式为
1 | # C++ |
其参数如下.
参数 | 含义 |
---|---|
probImage | Back projection of the object histogram. See calcBackProject() |
window | Initial search window |
criteria | Stop criteria for the underlying meanShift() |
人体追踪代码
1 | #!/usr/local/bin/python |
运行结果
识别摄像头采集图像中的人体并实时跟踪,效果如下.
由于人体识别的算法效果一般,且CamShift的跟踪效果也不太好,经常会出现初始人体识别错误导致跟踪的不是人体 或 跟踪一段时间后突然跟踪到其它相邻物体的情况.
该算法有待进一步改进.