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

本文介绍了使用OpenCV在Windows环境下,通过C++实现的人手检测程序。程序涉及视频帧获取、YCrCb颜色空间转换、肤色分割、膨胀腐蚀、分水岭算法、模板匹配等步骤,最终通过匹配值和肤色比例筛选出人手区域。尽管存在误识别人脸的问题,但已能初步实现人手检测。未来计划优化提高稳定性。
最低0.47元/天 解锁文章
3168





