- 8
- 0
- 约1.44万字
- 约 14页
- 2018-03-10 发布于湖北
- 举报
KinectOpenNI学习笔记之7(OpenNI自带的类实现手部跟踪)课件
前言
本文主要介绍使用OpenNI中的HandsGenerator来完成对人体手部的跟踪,在前面的文章Kinect+OpenNI学习笔记之5(使用OpenNI自带的类进行简单手势识别)中 已经介绍过使用GestureGenerator这个类来完成对几个简单手势的识别,这次介绍的手部跟踪是在上面简单手势识别的结果上开始跟踪的,这是 OpenNI的优点,微软的SDK据说是不能单独对手部进行跟踪,因为使用MS的SDK需要检测站立人体的骨骼,然后找出节点再进行跟踪,不懂最新版本的 是否支持这个功能。而此节讲的OpenNI完成手部的跟踪就不要求人必须处于站立姿势。
开发环境:QtCreator2.5.1+OpenNI+Qt4.8.2
?
实验说明
本次实验是分为2个类来设计的。COpenNI和CKinectReader这2个类。COpenNI类负责完成Kinect的OpenNI驱 动,而CKinectReader类负责将kinect读取的信息在Qt中显示出来,且使用定时器定时刷新,此过程中可以在图像中画内容。
进行手势的整体流程大概如下:
有关手势识别和跟踪的回调函数的设置在COpenNI这个类中进行,但是因为回调函数是static类型,所以对应函数里面的变量也必须是 static类型,但是我们的变量初始化又放在了类中进行,而static类型的变量不能在类中进行初始化, 因此最好将回调函数用到的几个static类 型的变量直接放在了类外,这样虽然达到了效果,不过貌似不是一个完整的类的设计。暂时没找到好的解决方法。
从官方文档来看,OpenNI中进行手部跟踪,即采用节点hand generator来跟踪需要搭配手势检测的节点gesture generator,其代码实现流程如下:
先使用gesture generator来侦测特定的手势
当检测到特定的手势后开始进行handsgenerator的starttracking()函数来进行跟踪手部。
当hands generator开始跟踪手部位置时,HandCreate()函数被调用。
以后每当有变化的时候,都会执行HandUpdate()函数。
如果手势超出了可侦测的范围,则其回自动调用HandDestroy()函数。
?
? ?C/c++知识点总结:
如果一个数据类型声明为auto了,那么说明该数据类型为local局部变量,一般auot关键字可以省略。
map表示的是一个键值对,其中第一个参数为键值对的类型id,这个具有唯一性,第二个是该数据类型的对应值。map的cbegin()方法表示的是返回一个常量迭代器。
array数据类型其实就是一个数组类型,定义它的时为arrayint, n表示,其长度为n,数组中的元素数据类型为int型。
static函数有点类似回调函数,一般是用来记录类对象被引用的次数或者这个函数的地址需要被外部代码调用。静态函数有2个好处,一是只能被其自己的文件使用, 不能被其它的文件使用。二是其它文件可以定义相同名字的函数,不会发生冲突。
如果是在类中使用静态函数,则它是为类服务的而不是为了某一个类的具体对象服务。普通的成员函数都隐含了一个this指针,因为普通成员函数总 是与具体的某个类的具体对象的。但静态成员函数由于不是与任何对象相联系,因此它不具有this指针。从这个意义上讲,它无法访问属于类对象的某个非静态 数据成员,也无法访问非静态成员函数,它只能调用其余的静态成员函数。
由于在本程序中,需要用到回调函数,而回调函数在类中一般需要声明成静态函数,所以在回调函数中调用类的成员变量时 这些变量不能够是非静态的成员变量,编程时一定要注意。比如说在回调函数中有代码 hands_generator.StartTracking(*pIDPosition);其中hands_generaotr是普通私有变量,这时编 译代码时会出现如下错误提示:
另外类中的静态成员变量是属于类的,不是属于对象的,因此在定义对象的时候不能够对其进行初始化,也就是说不能够用构造函数来初始化它,如果在类外来初始化它,应该加上在变量前加上类名,而不是变量名。
?
Qt知识点总结:
如果需要用QPainter来绘图的话,则需要将绘图部分的代码放在begin()和end()方法中,外,用QPainter 来创建一个新的绘图类时,其内部已经隐含了具有begin()方法。
?
实验结果:
这是实验中截图的一张结果,该实验可以同时跟踪多个手部,每一个使用不同的颜色来显示其轨迹,当识别到手部后,可以使用手指在空中写字。
?
实验主要部分代码及注释(附录有实验工程code下载地址):
cope
您可能关注的文档
- coreldraw入门教程.doc推荐.doc
- CORELDRAW基础知识+入门教程教案.doc
- coreldRAW X4从新手到高手2推荐.doc
- CorelDRAW_X4经典入门教程推荐.ppt
- CorelDRAW实例教程:X4版本表格功能详解课件.docx
- C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第七章 课后答案详解.doc
- C语言 学生成绩管理系统 毕业论文(加数据库)课件.docx
- C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第五章 课后答案详解.doc
- C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第八章 课后答案详解.doc
- C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第二章 课后答案分析.doc
最近下载
- 工业机器人技术基础PPT(高职)全套完整教学课件.pptx VIP
- 《JC_T 60006-2020 瓷砖薄贴法施工技术规程》标准全文.pdf VIP
- 2025年电子仓库考试试题及答案.doc VIP
- 东风风神-AX7-产品使用说明书-风神AX7 2015款 2.0L MT智逸型-DFM6470D5A-东风风神AX7使用手册201410.pdf VIP
- 北师大中学生物学教学论课件01绪论.ppt VIP
- 2026年度组织生活会个人对照检查材料汇编七篇.pdf VIP
- 2025年军用加固显示器行业深度研究报告.docx
- 2024年江苏城市职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析.docx VIP
- 调试记录汇总.doc VIP
- 美术礼器之美讲解.pptx VIP
原创力文档

文档评论(0)