最近在做毕业设计,其中一个部分要实现对视频序列中人手位置的跟踪。因此先写了人手的检测程序,下一步基于检测程序再用camshift算法做人手的跟踪。
目前完成的程序在我的笔记本上运行大概是一帧80-100ms,直接用检测算法来做跟踪算法其实也马马虎虎可以用了。
开发环境如下:
系统:Windows 10
IDE:Visual Studio 2013
语言:C++
算法库:OpenCV
程序思路如下
1)获取视频帧
2)将视频帧转换到YCrCb颜色空间,并分割通道
3)基于Cr和Cb两个通道做肤色区域的分割,得到肤色区域二值图像
4)将二值图像分别做膨胀和腐蚀处理,得到前景和背景的标记(marker)图像,应用分水岭算法,得到大块肤色区域的边缘轮廓
5)对4)中得到的边缘轮廓用8</