欢迎来到天天文库
浏览记录
ID:36495043
大小:331.00 KB
页数:8页
时间:2019-05-11
《KinectOpenNI学习笔记之3(获取kinect数据并在Qt中显示类设计)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Kinect+OpenNI学习笔记之3(获取kinect的数据并在Qt中显示的类的设计) 前言 在上一篇文章Kinect+OpenNI学习笔记之2(获取kinect的颜色图像和深度图像) 中,已经介绍了怎样使用OpenNI来获取Kinect的深度数据和颜色数据,并将获取到的结果在Qt中显示,不过那个代码是写在同一个cpp文件中,以后用到的时候不能讲这些显示的基本过程单独拿出来,比较麻烦。所以这节主要是将OpenNI获取图像的流程以及Qt显示这些图像的结果分开为了2个类来写,方便以后工程的直接拷贝。 开发环
2、境:QtCreator2.5.1+OpenNI1.5.4.0+Qt4.8.2 实验说明 COpenNI这个类主要是初始化kinect设备,并获取深度图像和颜色图像,参加上一篇博客的初始化过程步骤,如果遇到错误,则有相应的错误处理过程。CKinectReader类是将COpenNI这个类读取到的结果显示在Qt的界面上的。因此一个类是负责与硬件Kinect打交道,一个类是负责与人(界面显示)打交道的。具体的过程见上篇文章的分析和后面的代码。 这里发现一个小问题,与kinect有关的工程如果改变了代码,则在每次
3、编译前最好clean一下,因为有可能是与硬件设备相关,没有clean的工程和clean后的工程效果有时会不同。 C/C++知识点总结: 在构造函数中可以使用冒号给类中的数据成员赋值,这样的好处就是可以给常量和引用变量赋值初始化赋值的效果。 类的私有成员只能是类内部的函数调用,连类的对象都不能去调用私有成员变量。 在类的内部使用qDebug(),cout等函数输出调试时是不行的。 隐式数据类型转换,如果是同种类型的数据进行四则运算,则得出的结果也是那种类型,如果其中有常数类型的数据常数参与,则得出的结果
4、会自动转换成跟常数类型相同的类型。 如果一个类以单独一个cpp文件出现,在使用到该类的时候,直接include该cpp文件. 实验结果 在程序中设置了镜像和视觉校正,且将kinect感应不到深度信息的地方全部显示为不透明的黑色,因此你在图中看到的黑色部分就是kinect的深度盲区。8 效果如下: 实验主要部分代码及注释(附录有工程code下载链接):copenni.cpp:#include#include#includeusin
5、gnamespacexn;usingnamespacestd;8classCOpenNI{public:~COpenNI(){context.Release();//释放空间}boolInitial(){//初始化status=context.Init();if(CheckError("Contextinitialfailed!")){returnfalse;}context.SetGlobalMirror(true);//设置镜像//产生图片nodestatus=image_generator.Create(c
6、ontext);if(CheckError("Createimagegeneratorerror!")){returnfalse;}//产生深度nodestatus=depth_generator.Create(context);if(CheckError("Createdepthgeneratorerror!")){returnfalse;}//视角校正status=depth_generator.GetAlternativeViewPointCap().SetViewPoint(image_generator
7、);if(CheckError("Can'tsetthealternativeviewpointondepthgenerator")){returnfalse;}returntrue;}boolStart(){status=context.StartGeneratingAll();if(CheckError("Startgeneratingerror!")){returnfalse;}returntrue;}8boolUpdateData(){status=context.WaitNoneUpdateAll();
8、if(CheckError("Updatedateerror!")){returnfalse;}//获取数据image_generator.GetMetaData(image_metadata);depth_generator.GetMetaData(depth_metadata);returntrue;}public:DepthMetaDatadepth_metadat
此文档下载收益归作者所有