OpenCV学习笔记(二):基于肤色的手势检测与追踪程序
发布时间
阅读量:
阅读量
近期在进行毕业设计的过程中,其中一项任务是实现对视频序列中人手位置的追踪功能。因此,首先编写了用于检测人手的程序,随后基于该检测程序,采用CamShift算法对人手进行跟踪。
目前完成的程序在我的笔记本电脑上运行时,每帧的处理时间大约为80至100毫秒。实际上,直接使用检测算法作为跟踪方法也基本可以满足需求。
开发环境如下:
系统:Windows 10
IDE:Visual Studio 2013
语言:C++
算法库:OpenCV
程序的整体思路如下:
1)读取视频帧;
2)将获取到的视频帧转换为YCrCb颜色空间,并对其进行通道分离;
3)基于Cr和Cb两个通道进行肤色区域分割,从而获得二值化的肤色图像;
4)对得到的二值图像分别执行膨胀和腐蚀操作,以生成前景与背景的标记图像,并通过分水岭算法提取出大面积肤色区域的边缘轮廓;
5)针对第4步中提取到的边缘轮廓,采用8向种子算法对不同肤色区域进行标记,并返回各个区域的边界范围。这些区域将作为可能的人手区域候选;
6)将第5步中获取到的人手候选区域与预先准备好的人手模板(基于Cr通道)进行匹配操作,在匹配前先将候选区域缩放至与模板一致的尺寸。所采用的方法为平方差匹配法,依据匹配结果(数值越小表示越接近)判断每个候选区是否符合要求;
7)统计第5步中所有候选区域内所包含的肤色像素比例;
8)根据第6步和第
全部评论 (0)
还没有任何评论哟~
