opencv的手势识别【字数:10609】
摘 要手势可以来自身体各部分运动,是人类的基本特征,但一般是指面部和手。手势识别技术的发展使人们能够摆脱环境和输入设备的影响,实现人与机器或其他设备进行自然而有效的交互。本系统在Visual Studio 2012中安装OpenCV函数库,以C++为开发语言进行编程。基于OpenCV的手势识别,首先选择本地手势图片进行识别或者打开本机摄像头获取摄像头当前帧,然后建立基于HSV颜色空间的肤色分割,对颜色空间转换后的图像进行二值化处理,再进行滤波除噪,形态学滤波等图片预处理操作,对得到的图像进行轮廓提取与筛选获取手势区域,最后查找轮廓凸包点并计算其总数,将凸包点数量转换为数字。本文的写作思路安排如下首先研究了手势识别的技术背景及其发展,总结了国内外对手势识别的各项研究发展状况和关于本课题所研究的内容及其意义的论述。再根据实现手势识别的大致流程具体描述了常用的几种技术方法并对这些方法进行合理的对比分析,也为后文的各个功能模块具体采用什么方法作铺垫。然后说明关键功能的实现方法,遇到的问题及其解决方案。再次写明了关于此系统的具体测试方案及详细过程。最后对该课题进行总结和展望,致谢所有帮助我的人。
目 录
第一章 引言 1
1.1 研究背景及发展 1
1.2 国内外研究现状 1
1.3 课题研究意义及其主要研究内容 2
第二章 系统开发对社会的影响 3
第三章 开发环境和关键技术简介 4
3.1 系统开发环境及其配置 4
3.2 关键技术 8
第四章 系统分析 9
4.1 系统设计概述 9
4.2基本设计概念和处理流程 9
4.3需求分析 9
第五章 功能分析 11
5.1 手势图像采集 11
5.2 肤色分割 11
5.2.1 RGB颜色空间 11
5.2.2 HSV颜色空间 12
5.2.3 YCrCb 颜色空间 13
5.3 图像预处理 13
5.4 轮廓 14
5.4.1 查找轮廓和绘制轮廓 14
5.4.2 深入分析轮廓 14
5.4.3 *好棒文|www.hbsrm.com +Q: ¥351916072$
轮廓的匹配 14
第六章 系统的设计与实现 15
6.1 系统结构划分 15
6.2 系统功能模块 15
6.2.1采集手势图像 15
6.2.2 转换颜色空间 17
6.2.3 图像二值化 17
6.2.4 图像预处理 17
6.2.5 手势轮廓的提取与筛选 18
6.2.6 凸包检测与识别结果 18
第七章 系统测试 20
7.1界面测试 20
7.2 颜色空间转换 22
7.3 图像二值化和图像预处理 22
7.4 轮廓 24
7.4.1 多边形逼近 24
7.4.2 矩形边界框 25
7.4.3 轮廓的凸包和凸包缺陷 26
结语 27
参考文献 28
致谢 29
第一章 引言
随着计算机视觉和人机交互技术快速向前发展,人们希望自己的生活方式也能得到更好的改变,让每天的生活和工作充满智能,并能时刻享受到简单高效、自然人性的智能操作。手势识别是未来人机交互发展的重要方向,因此手势识别的实时性和准确性显得尤为重要。目前,可用于人机自然交互的手势识别主要是基于手臂大幅摆动的大动作,像手指间滑动这种精细动作在识别度和实时性上并不理想。现今,手势识别作为一种新型的人机交互技术,已变成研究计算机视觉,图像处理,模式识别等领域的热门话题,未来可以应用在手机、可穿戴设备甚至物联网设备。本文主要研究基于OpenCV的手势识别系统,为该领域的未来研究提供依据。
1.1 研究背景及发展
新的人机交互有两个主要的研究发展方向:第一种是利用计算机视觉技术,通过摄像头实时采集手势动作信息来作为手势交互的信息,第二种类型是借助于计算机的设备,这要求人们戴数据手套或类似传感器的中断设备来获取设备信息。
手势识别作为人机交互的重要组成部分,其研究发展影响着人机交互的自然性和灵活性。目前大多数研究者均将注意力集中在手势的最终识别方面,通常会将手势背景简化,并在单一背景下利用所研究的算法将手势进行分割,然后采用常用的识别方法将手势表达的含义通过系统分析出来。但在现实应用中,手势通常处于复杂的环境下,例如: 光线过亮或过暗有较多手势存在手势距采集设备距离不同等各种复杂背景因素。这些方面的难题目前尚未得到解决,且将来也难以解决 因此需要研究人员就目前所预想到的难题在特定环境下加以解决,进而通过多种方法的结合来实现适于不同复杂环境下的手势识别,由此对手势识别研究及未来人性化的人机交互做出贡献[3]。
手势识别技术关注的不仅是算法本身,未来会更注重实时手势处理技术。当很多用于开发计算机视觉技术的软件发展的同时,硬件也在不断发展。随着摄像机越来越便宜,大部分手机和笔记本电脑都携带摄像头,人们可以利用轻便的摄像头和OpenCV解决重要问题,使更多人对计算机视觉和人机交互产生兴趣。
1.2 国内外研究现状
在九十年代,英国大学将当前交互者面部形状与已载入的用户模板人脸形状比较,近似得出人脸偏向的结果,这样可以控制智能轮椅的运动。美国CMU机器人实验室实现了一种可以根据人的手势和手臂动作进行一些简单清扫的机器人。在2010年印度学者已经实现利用手势来远程控制机器人几种简单的运动状态,如向前进和向后退,向左转和向右转及停止。
国内对于手势识别的研究起步较晚,但是国内很多高校和研究院甚至企业机构都在努力钻研,使这项技术能在国内迅速发展。早在2000年,哈尔滨工业大学采用数据手套作为手语输入设备,采用多层DGMM识别系统,通过使用元混合密度将手语信号模拟化,可以识别出中国手语字典中的270多个词条。天津大学研究的中文语音识别系统可以用来控制机器人。清华大学研究了一个应用于电脑游戏中替代手柄设备的手势识别系统,选择具有高识别率的十种手势类别作为人机交互的信号。
1.3 课题研究意义及其主要研究内容
计算机技术的不断研究发展,是计算机语言越来越多,操作也越来越复杂,而人机交互作为人与计算机之间传递信息的媒介,应该简化交流方式。传统的人机交互模式是依赖于如键盘,鼠标,手柄,数据手套等简单的机械装置,但是这些在灵活性和实现精确控制方面存在限制。新型的人机交互方式方便、直接、易于使用并且符合人类交流习惯,其中一种主流方式就是手势识别技术。
本课题将OpenCV函数库安装到Visual Studio中,以C++为开发语言进行编程。基于OpenCV的手势识别,首先编写可视化软件界面,然后通过两种方式获取手势图像,一是选择本地手势图片进行识别(图片中只有手势,背景无杂物),二是打开本机摄像头,显示摄像头画面,获取摄像头当前帧。摄像头拍摄的图像是基于RGB颜色空间的,因此不适合进行肤色分割,可以通过将RGB颜色空间转换为HSV空间来更好的实现肤色分割。并且根据肤色在HSV颜色空间的自适应阈值对图像进行二值化处理,再经过中值滤波除噪,先膨胀后腐蚀的闭运算等图像预处理后,更有利于进行轮廓提取和筛选,获取目标手势区域,然后进行凸包检测,得到轮廓凸包点,计算凸包点的数量,将其转换为对应的数字,从而得到当前手势所对应的数字。
目 录
第一章 引言 1
1.1 研究背景及发展 1
1.2 国内外研究现状 1
1.3 课题研究意义及其主要研究内容 2
第二章 系统开发对社会的影响 3
第三章 开发环境和关键技术简介 4
3.1 系统开发环境及其配置 4
3.2 关键技术 8
第四章 系统分析 9
4.1 系统设计概述 9
4.2基本设计概念和处理流程 9
4.3需求分析 9
第五章 功能分析 11
5.1 手势图像采集 11
5.2 肤色分割 11
5.2.1 RGB颜色空间 11
5.2.2 HSV颜色空间 12
5.2.3 YCrCb 颜色空间 13
5.3 图像预处理 13
5.4 轮廓 14
5.4.1 查找轮廓和绘制轮廓 14
5.4.2 深入分析轮廓 14
5.4.3 *好棒文|www.hbsrm.com +Q: ¥351916072$
轮廓的匹配 14
第六章 系统的设计与实现 15
6.1 系统结构划分 15
6.2 系统功能模块 15
6.2.1采集手势图像 15
6.2.2 转换颜色空间 17
6.2.3 图像二值化 17
6.2.4 图像预处理 17
6.2.5 手势轮廓的提取与筛选 18
6.2.6 凸包检测与识别结果 18
第七章 系统测试 20
7.1界面测试 20
7.2 颜色空间转换 22
7.3 图像二值化和图像预处理 22
7.4 轮廓 24
7.4.1 多边形逼近 24
7.4.2 矩形边界框 25
7.4.3 轮廓的凸包和凸包缺陷 26
结语 27
参考文献 28
致谢 29
第一章 引言
随着计算机视觉和人机交互技术快速向前发展,人们希望自己的生活方式也能得到更好的改变,让每天的生活和工作充满智能,并能时刻享受到简单高效、自然人性的智能操作。手势识别是未来人机交互发展的重要方向,因此手势识别的实时性和准确性显得尤为重要。目前,可用于人机自然交互的手势识别主要是基于手臂大幅摆动的大动作,像手指间滑动这种精细动作在识别度和实时性上并不理想。现今,手势识别作为一种新型的人机交互技术,已变成研究计算机视觉,图像处理,模式识别等领域的热门话题,未来可以应用在手机、可穿戴设备甚至物联网设备。本文主要研究基于OpenCV的手势识别系统,为该领域的未来研究提供依据。
1.1 研究背景及发展
新的人机交互有两个主要的研究发展方向:第一种是利用计算机视觉技术,通过摄像头实时采集手势动作信息来作为手势交互的信息,第二种类型是借助于计算机的设备,这要求人们戴数据手套或类似传感器的中断设备来获取设备信息。
手势识别作为人机交互的重要组成部分,其研究发展影响着人机交互的自然性和灵活性。目前大多数研究者均将注意力集中在手势的最终识别方面,通常会将手势背景简化,并在单一背景下利用所研究的算法将手势进行分割,然后采用常用的识别方法将手势表达的含义通过系统分析出来。但在现实应用中,手势通常处于复杂的环境下,例如: 光线过亮或过暗有较多手势存在手势距采集设备距离不同等各种复杂背景因素。这些方面的难题目前尚未得到解决,且将来也难以解决 因此需要研究人员就目前所预想到的难题在特定环境下加以解决,进而通过多种方法的结合来实现适于不同复杂环境下的手势识别,由此对手势识别研究及未来人性化的人机交互做出贡献[3]。
手势识别技术关注的不仅是算法本身,未来会更注重实时手势处理技术。当很多用于开发计算机视觉技术的软件发展的同时,硬件也在不断发展。随着摄像机越来越便宜,大部分手机和笔记本电脑都携带摄像头,人们可以利用轻便的摄像头和OpenCV解决重要问题,使更多人对计算机视觉和人机交互产生兴趣。
1.2 国内外研究现状
在九十年代,英国大学将当前交互者面部形状与已载入的用户模板人脸形状比较,近似得出人脸偏向的结果,这样可以控制智能轮椅的运动。美国CMU机器人实验室实现了一种可以根据人的手势和手臂动作进行一些简单清扫的机器人。在2010年印度学者已经实现利用手势来远程控制机器人几种简单的运动状态,如向前进和向后退,向左转和向右转及停止。
国内对于手势识别的研究起步较晚,但是国内很多高校和研究院甚至企业机构都在努力钻研,使这项技术能在国内迅速发展。早在2000年,哈尔滨工业大学采用数据手套作为手语输入设备,采用多层DGMM识别系统,通过使用元混合密度将手语信号模拟化,可以识别出中国手语字典中的270多个词条。天津大学研究的中文语音识别系统可以用来控制机器人。清华大学研究了一个应用于电脑游戏中替代手柄设备的手势识别系统,选择具有高识别率的十种手势类别作为人机交互的信号。
1.3 课题研究意义及其主要研究内容
计算机技术的不断研究发展,是计算机语言越来越多,操作也越来越复杂,而人机交互作为人与计算机之间传递信息的媒介,应该简化交流方式。传统的人机交互模式是依赖于如键盘,鼠标,手柄,数据手套等简单的机械装置,但是这些在灵活性和实现精确控制方面存在限制。新型的人机交互方式方便、直接、易于使用并且符合人类交流习惯,其中一种主流方式就是手势识别技术。
本课题将OpenCV函数库安装到Visual Studio中,以C++为开发语言进行编程。基于OpenCV的手势识别,首先编写可视化软件界面,然后通过两种方式获取手势图像,一是选择本地手势图片进行识别(图片中只有手势,背景无杂物),二是打开本机摄像头,显示摄像头画面,获取摄像头当前帧。摄像头拍摄的图像是基于RGB颜色空间的,因此不适合进行肤色分割,可以通过将RGB颜色空间转换为HSV空间来更好的实现肤色分割。并且根据肤色在HSV颜色空间的自适应阈值对图像进行二值化处理,再经过中值滤波除噪,先膨胀后腐蚀的闭运算等图像预处理后,更有利于进行轮廓提取和筛选,获取目标手势区域,然后进行凸包检测,得到轮廓凸包点,计算凸包点的数量,将其转换为对应的数字,从而得到当前手势所对应的数字。
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/wlw/206.html