基于Kinect的PPT控制系统研究*
2014-07-31朱明茗景红
朱明茗+景红
摘 要:在高校中,运用PPT课件的多媒体教学已经成为一种非常重要的课堂教学活动形式。本文对基于基本输入设备的PPT控制系统在教学运用中存在的主要问题进行了分析,并简要介绍了Kinect的基本功能和应用优势。在此基础上,本文详细阐述了如何实现Kinect对PPT的控制。
关键词:PPT;高校教学;Kinect
中图分类号:TP316 文献标志码:A 文章编号:1673-8454(2014)09-0080-02
一、引言
PPT最初开发的目的是用于公众场合的演讲,它具有完善的多媒体处理功能和很多灵活的控制方式,且相对于其他技术更简单易学。近年来,PPT在高校教学中的应用更是广泛,几乎成为了不可或缺的工具。PPT的使用,大大提高了教师传授知识的效率,使老师从完全板书中得到解放,而且PPT中可以添加图像、声音、视频等多媒体内容,更加有利于教师对教学内容的表达,提高了教师的授课效果。
PPT显示的都是标准文字,更清晰易读,使学生不必要去“猜”教师板书中的文字,从而提高了学生对课程内容的理解和课程笔记的质量。并且PPT可保存和复制的特性,弥补了板书的实时性所带来的缺陷,即便是在课后复习中,学生也很容易重现教师的授课思路,有利于学生对知识的掌握。
但是,PPT在广泛应用的同时,随之带来的问题也不容忽视,如在师生时间的交互性和效率上。如今课堂中,教师一般通过鼠标、键盘来控制PPT。由于鼠标、键盘与讲台绑在一起,这就将教师限制在了讲台之上。这样在某种程度上增加了学生和教师之间的距离感,减少了师生之间的交流,降低教学过程中的互动性,从而影响教学质量。激光笔在使用的灵活性方面得到改善,但“光点的晃来晃去”也常常扰乱了学生的视线。
Kinect是一种3D体感摄影机,它能够准确地追踪人体骨骼,识别人体的动作并实时处理。人们可以站在Kinect前做出各种动作来与计算机交互,而不需要佩带或接触任何输入设备。通过将Kinect体感设备与PPT结合,教师对PPT的控制具有更大的灵活性,进而提高了课堂教学效率。
二、Kinect简介
Kinect是微软在2010发布Xbox 360时,将其作为体感周边外设一起推出的。Kinect提供了一种全新的操作方式,它通过语言、手势、动作,以自然用户界面实现操作。
如图1所示,Kinect有两个3D深度摄像头和一个RGB摄像头。左边的深度摄像头发射红外光谱,覆盖整个Kinect的可视范围;右边的红外线接收器,接收并读取反射散斑,进而创建Kinect可视范围内的深度图像。中间的RGB彩色摄像头,拍摄可视范围内的彩色图像,配合3D摄像头实现Kinect的图像识别检测操作。Kinect的下部是一个麦克风阵列,由4个麦克风组成,用来采集和定位声音,同时帮助过滤背景噪声,使其作为语音识别的命令。Kinect的底座内置仰角控制马达,可通过编程控制Kinect的拍摄角度,使摄像头本体能够看到的范围更广泛。
三、基于Kinect的PPT控制系统的设计
本系统通过使用OpenNI/NITE平台,设计并实现Kinect对手势的获取与识别。目前,OpenNI/NITE只支持4种手势,即Wave(挥手),Click(点),RaiseHand(举手),MovingHand(移动手)。在这里设定当用户Click时,表示翻入“下一页”,当用户“RaiseHand”时,表示翻入“上一页”。具体实现流程如图2所示。
1.实例化context对象,声明深度和手势生产节点
Context对象保存了应用程序使用OpenNI的完整状态,首先对Context对象声明和初始化;其次,声明生产节点Generator。Generator根据声明的类型不同,生成所需要的数据,供其他生产节点使用。最后,通过Context对象,保存DepthGenerator和GestureGenerator生产链。关键代码如下:
// initial context
xn::Context mContext;
eRes = mContext.Init();
//create depth generator
xn::DepthGeneratormDepthGenerator;
eRes = mDepthGenerator.Create( mContext );
// initial gesture generator
xn::GestureGeneratormGesture;
eRes = mGesture.Create( mContext );
2.添加识别的手势
GestureGenerator主要用于手势识别,这里通过使用AddGesture函数将“RaiseHand”和“Click”两个手势动作加入。具体实现如下:
// add“Click”
eRes =mGesture.AddGesture( "Click", NULL );
// add“RaiseHand”
eRes =mGesture.AddGesture( "RaiseHand", NULL );
3.声明回调函数
当需要的手势被识别出来时,需要通过回调函数具体处理。在这里,通过声明RegisterGestureCallBacks()函数来登记GestureGenerator的回调函数GestureRecognized()和GestureProcess(),从而实现对侦测到的手势的处理。其中,当手势结束时,调用GestureRecognized(),当手势在执行中时,调用GestureProcess()。回调函数形式如下:
mGesture.RegisterGestureCallbacks( GRecognized, GProgress, NULL, hHandle );
其中,GRecognized为图像处理后的回调函数,Progress是手势进行中的回调函数,hHandle是传入用户的数据。
4.处理识别手势
GRecognized()函数对识别出的手势进行具体的处理。当手势识别出来时,将具体手势信息参数传入本函数中,当参数名称为“RaiseHand”时,系统发出“向上翻”的命令,当参数名称为“Click”时,需提供发出“向下翻”命令。处理函数形式如下:
void XN_CALLBACK_TYPE GRecognized( xn::GestureGenerator &generator, const XnChar *strGesture,
const XnPoint3D *pIDPosition, const XnPoint3D *pEndPosition, void *pCookie );
其中,generator为发现手势的生产节点,strGesture存储被识别的手势名称,iPDPosition与pEndPosition为手势的起始与终止位置,pCookie为传入的用户参数。
5.实验结果
如图3展示了动作识别的结果和手部的坐标数据。系统通过识别出的手部动作,触发键盘事件,进而实现控制PPT翻页功能。
四、结束语
PPT课件在高校课堂中应用的比重越来越大,以PPT课件为基础的教学系统中存在的弊端也不容忽视。本文通过Kinect实现手势控制PPT,对以后针对Kinect的PPT控制系统的开发和优化有一定的实用和参考价值。
参考文献:
[1]马建荣,章苏静,李凤.基于体感技术的亲子互动游戏设计与实现[J].中国电化教育,2012.
[2]heresy.OPENNI的手势侦测.http://viml.nchc.org.tw/.
(编辑:杨馥红)
endprint
摘 要:在高校中,运用PPT课件的多媒体教学已经成为一种非常重要的课堂教学活动形式。本文对基于基本输入设备的PPT控制系统在教学运用中存在的主要问题进行了分析,并简要介绍了Kinect的基本功能和应用优势。在此基础上,本文详细阐述了如何实现Kinect对PPT的控制。
关键词:PPT;高校教学;Kinect
中图分类号:TP316 文献标志码:A 文章编号:1673-8454(2014)09-0080-02
一、引言
PPT最初开发的目的是用于公众场合的演讲,它具有完善的多媒体处理功能和很多灵活的控制方式,且相对于其他技术更简单易学。近年来,PPT在高校教学中的应用更是广泛,几乎成为了不可或缺的工具。PPT的使用,大大提高了教师传授知识的效率,使老师从完全板书中得到解放,而且PPT中可以添加图像、声音、视频等多媒体内容,更加有利于教师对教学内容的表达,提高了教师的授课效果。
PPT显示的都是标准文字,更清晰易读,使学生不必要去“猜”教师板书中的文字,从而提高了学生对课程内容的理解和课程笔记的质量。并且PPT可保存和复制的特性,弥补了板书的实时性所带来的缺陷,即便是在课后复习中,学生也很容易重现教师的授课思路,有利于学生对知识的掌握。
但是,PPT在广泛应用的同时,随之带来的问题也不容忽视,如在师生时间的交互性和效率上。如今课堂中,教师一般通过鼠标、键盘来控制PPT。由于鼠标、键盘与讲台绑在一起,这就将教师限制在了讲台之上。这样在某种程度上增加了学生和教师之间的距离感,减少了师生之间的交流,降低教学过程中的互动性,从而影响教学质量。激光笔在使用的灵活性方面得到改善,但“光点的晃来晃去”也常常扰乱了学生的视线。
Kinect是一种3D体感摄影机,它能够准确地追踪人体骨骼,识别人体的动作并实时处理。人们可以站在Kinect前做出各种动作来与计算机交互,而不需要佩带或接触任何输入设备。通过将Kinect体感设备与PPT结合,教师对PPT的控制具有更大的灵活性,进而提高了课堂教学效率。
二、Kinect简介
Kinect是微软在2010发布Xbox 360时,将其作为体感周边外设一起推出的。Kinect提供了一种全新的操作方式,它通过语言、手势、动作,以自然用户界面实现操作。
如图1所示,Kinect有两个3D深度摄像头和一个RGB摄像头。左边的深度摄像头发射红外光谱,覆盖整个Kinect的可视范围;右边的红外线接收器,接收并读取反射散斑,进而创建Kinect可视范围内的深度图像。中间的RGB彩色摄像头,拍摄可视范围内的彩色图像,配合3D摄像头实现Kinect的图像识别检测操作。Kinect的下部是一个麦克风阵列,由4个麦克风组成,用来采集和定位声音,同时帮助过滤背景噪声,使其作为语音识别的命令。Kinect的底座内置仰角控制马达,可通过编程控制Kinect的拍摄角度,使摄像头本体能够看到的范围更广泛。
三、基于Kinect的PPT控制系统的设计
本系统通过使用OpenNI/NITE平台,设计并实现Kinect对手势的获取与识别。目前,OpenNI/NITE只支持4种手势,即Wave(挥手),Click(点),RaiseHand(举手),MovingHand(移动手)。在这里设定当用户Click时,表示翻入“下一页”,当用户“RaiseHand”时,表示翻入“上一页”。具体实现流程如图2所示。
1.实例化context对象,声明深度和手势生产节点
Context对象保存了应用程序使用OpenNI的完整状态,首先对Context对象声明和初始化;其次,声明生产节点Generator。Generator根据声明的类型不同,生成所需要的数据,供其他生产节点使用。最后,通过Context对象,保存DepthGenerator和GestureGenerator生产链。关键代码如下:
// initial context
xn::Context mContext;
eRes = mContext.Init();
//create depth generator
xn::DepthGeneratormDepthGenerator;
eRes = mDepthGenerator.Create( mContext );
// initial gesture generator
xn::GestureGeneratormGesture;
eRes = mGesture.Create( mContext );
2.添加识别的手势
GestureGenerator主要用于手势识别,这里通过使用AddGesture函数将“RaiseHand”和“Click”两个手势动作加入。具体实现如下:
// add“Click”
eRes =mGesture.AddGesture( "Click", NULL );
// add“RaiseHand”
eRes =mGesture.AddGesture( "RaiseHand", NULL );
3.声明回调函数
当需要的手势被识别出来时,需要通过回调函数具体处理。在这里,通过声明RegisterGestureCallBacks()函数来登记GestureGenerator的回调函数GestureRecognized()和GestureProcess(),从而实现对侦测到的手势的处理。其中,当手势结束时,调用GestureRecognized(),当手势在执行中时,调用GestureProcess()。回调函数形式如下:
mGesture.RegisterGestureCallbacks( GRecognized, GProgress, NULL, hHandle );
其中,GRecognized为图像处理后的回调函数,Progress是手势进行中的回调函数,hHandle是传入用户的数据。
4.处理识别手势
GRecognized()函数对识别出的手势进行具体的处理。当手势识别出来时,将具体手势信息参数传入本函数中,当参数名称为“RaiseHand”时,系统发出“向上翻”的命令,当参数名称为“Click”时,需提供发出“向下翻”命令。处理函数形式如下:
void XN_CALLBACK_TYPE GRecognized( xn::GestureGenerator &generator, const XnChar *strGesture,
const XnPoint3D *pIDPosition, const XnPoint3D *pEndPosition, void *pCookie );
其中,generator为发现手势的生产节点,strGesture存储被识别的手势名称,iPDPosition与pEndPosition为手势的起始与终止位置,pCookie为传入的用户参数。
5.实验结果
如图3展示了动作识别的结果和手部的坐标数据。系统通过识别出的手部动作,触发键盘事件,进而实现控制PPT翻页功能。
四、结束语
PPT课件在高校课堂中应用的比重越来越大,以PPT课件为基础的教学系统中存在的弊端也不容忽视。本文通过Kinect实现手势控制PPT,对以后针对Kinect的PPT控制系统的开发和优化有一定的实用和参考价值。
参考文献:
[1]马建荣,章苏静,李凤.基于体感技术的亲子互动游戏设计与实现[J].中国电化教育,2012.
[2]heresy.OPENNI的手势侦测.http://viml.nchc.org.tw/.
(编辑:杨馥红)
endprint
摘 要:在高校中,运用PPT课件的多媒体教学已经成为一种非常重要的课堂教学活动形式。本文对基于基本输入设备的PPT控制系统在教学运用中存在的主要问题进行了分析,并简要介绍了Kinect的基本功能和应用优势。在此基础上,本文详细阐述了如何实现Kinect对PPT的控制。
关键词:PPT;高校教学;Kinect
中图分类号:TP316 文献标志码:A 文章编号:1673-8454(2014)09-0080-02
一、引言
PPT最初开发的目的是用于公众场合的演讲,它具有完善的多媒体处理功能和很多灵活的控制方式,且相对于其他技术更简单易学。近年来,PPT在高校教学中的应用更是广泛,几乎成为了不可或缺的工具。PPT的使用,大大提高了教师传授知识的效率,使老师从完全板书中得到解放,而且PPT中可以添加图像、声音、视频等多媒体内容,更加有利于教师对教学内容的表达,提高了教师的授课效果。
PPT显示的都是标准文字,更清晰易读,使学生不必要去“猜”教师板书中的文字,从而提高了学生对课程内容的理解和课程笔记的质量。并且PPT可保存和复制的特性,弥补了板书的实时性所带来的缺陷,即便是在课后复习中,学生也很容易重现教师的授课思路,有利于学生对知识的掌握。
但是,PPT在广泛应用的同时,随之带来的问题也不容忽视,如在师生时间的交互性和效率上。如今课堂中,教师一般通过鼠标、键盘来控制PPT。由于鼠标、键盘与讲台绑在一起,这就将教师限制在了讲台之上。这样在某种程度上增加了学生和教师之间的距离感,减少了师生之间的交流,降低教学过程中的互动性,从而影响教学质量。激光笔在使用的灵活性方面得到改善,但“光点的晃来晃去”也常常扰乱了学生的视线。
Kinect是一种3D体感摄影机,它能够准确地追踪人体骨骼,识别人体的动作并实时处理。人们可以站在Kinect前做出各种动作来与计算机交互,而不需要佩带或接触任何输入设备。通过将Kinect体感设备与PPT结合,教师对PPT的控制具有更大的灵活性,进而提高了课堂教学效率。
二、Kinect简介
Kinect是微软在2010发布Xbox 360时,将其作为体感周边外设一起推出的。Kinect提供了一种全新的操作方式,它通过语言、手势、动作,以自然用户界面实现操作。
如图1所示,Kinect有两个3D深度摄像头和一个RGB摄像头。左边的深度摄像头发射红外光谱,覆盖整个Kinect的可视范围;右边的红外线接收器,接收并读取反射散斑,进而创建Kinect可视范围内的深度图像。中间的RGB彩色摄像头,拍摄可视范围内的彩色图像,配合3D摄像头实现Kinect的图像识别检测操作。Kinect的下部是一个麦克风阵列,由4个麦克风组成,用来采集和定位声音,同时帮助过滤背景噪声,使其作为语音识别的命令。Kinect的底座内置仰角控制马达,可通过编程控制Kinect的拍摄角度,使摄像头本体能够看到的范围更广泛。
三、基于Kinect的PPT控制系统的设计
本系统通过使用OpenNI/NITE平台,设计并实现Kinect对手势的获取与识别。目前,OpenNI/NITE只支持4种手势,即Wave(挥手),Click(点),RaiseHand(举手),MovingHand(移动手)。在这里设定当用户Click时,表示翻入“下一页”,当用户“RaiseHand”时,表示翻入“上一页”。具体实现流程如图2所示。
1.实例化context对象,声明深度和手势生产节点
Context对象保存了应用程序使用OpenNI的完整状态,首先对Context对象声明和初始化;其次,声明生产节点Generator。Generator根据声明的类型不同,生成所需要的数据,供其他生产节点使用。最后,通过Context对象,保存DepthGenerator和GestureGenerator生产链。关键代码如下:
// initial context
xn::Context mContext;
eRes = mContext.Init();
//create depth generator
xn::DepthGeneratormDepthGenerator;
eRes = mDepthGenerator.Create( mContext );
// initial gesture generator
xn::GestureGeneratormGesture;
eRes = mGesture.Create( mContext );
2.添加识别的手势
GestureGenerator主要用于手势识别,这里通过使用AddGesture函数将“RaiseHand”和“Click”两个手势动作加入。具体实现如下:
// add“Click”
eRes =mGesture.AddGesture( "Click", NULL );
// add“RaiseHand”
eRes =mGesture.AddGesture( "RaiseHand", NULL );
3.声明回调函数
当需要的手势被识别出来时,需要通过回调函数具体处理。在这里,通过声明RegisterGestureCallBacks()函数来登记GestureGenerator的回调函数GestureRecognized()和GestureProcess(),从而实现对侦测到的手势的处理。其中,当手势结束时,调用GestureRecognized(),当手势在执行中时,调用GestureProcess()。回调函数形式如下:
mGesture.RegisterGestureCallbacks( GRecognized, GProgress, NULL, hHandle );
其中,GRecognized为图像处理后的回调函数,Progress是手势进行中的回调函数,hHandle是传入用户的数据。
4.处理识别手势
GRecognized()函数对识别出的手势进行具体的处理。当手势识别出来时,将具体手势信息参数传入本函数中,当参数名称为“RaiseHand”时,系统发出“向上翻”的命令,当参数名称为“Click”时,需提供发出“向下翻”命令。处理函数形式如下:
void XN_CALLBACK_TYPE GRecognized( xn::GestureGenerator &generator, const XnChar *strGesture,
const XnPoint3D *pIDPosition, const XnPoint3D *pEndPosition, void *pCookie );
其中,generator为发现手势的生产节点,strGesture存储被识别的手势名称,iPDPosition与pEndPosition为手势的起始与终止位置,pCookie为传入的用户参数。
5.实验结果
如图3展示了动作识别的结果和手部的坐标数据。系统通过识别出的手部动作,触发键盘事件,进而实现控制PPT翻页功能。
四、结束语
PPT课件在高校课堂中应用的比重越来越大,以PPT课件为基础的教学系统中存在的弊端也不容忽视。本文通过Kinect实现手势控制PPT,对以后针对Kinect的PPT控制系统的开发和优化有一定的实用和参考价值。
参考文献:
[1]马建荣,章苏静,李凤.基于体感技术的亲子互动游戏设计与实现[J].中国电化教育,2012.
[2]heresy.OPENNI的手势侦测.http://viml.nchc.org.tw/.
(编辑:杨馥红)
endprint