- 11
- 0
- 约8.91千字
- 约 12页
- 2016-11-06 发布于江苏
- 举报
Kinect+OpenNI学习笔记之2(获取kinect的颜色图像和深度图像).doc
Kinect+OpenNI学习笔记之2(获取kinect的颜色图像和深度图像)
?
前言
网上有不少使用Qt做界面,OpenNI为库来开发kinect。或许大家的第一个问题就是询问该怎样使用Kinect来获取颜色信息图和深度信息图呢?这一节就是简单来回答这个问题的。
开发环境:QtCreator2.5.1+OpenNI+Qt4.8.2
?
实验说明:
在使用OpenNI来驱动读取kinect数据时,我们需要了解context object这个名词。查看了下OpenNI UserGuide文档,简单翻译下这个名词的意思:
Context是openNI中一个主要的object,它掌握了OpenNI使用过程中应用程序的全部状态,以及这些状态的prodection chains,一个应用程序有多个context,但是这些context之间不能共享信息。例如一个中间件节点不能使用另一个context的驱动节点。Context在使用前必须被立即初始化,因此此时所有嵌入的模块被下载和分析。为了释放context的内存,应用程序需调用shutdown程序。??????
虽然翻译得不准确,但是它的大概意思就是告诉我们在驱动kinect时,需要用到context这个类,且我们需要安装一定顺序去使用,这与一些常见的库驱动差不多,比如opengl,这些都需要什么初始化啊,设置属性啊等。因此我们只需要直接去看懂他人的一个工程实例就ok了。
好了,本文参考Heresy的教程中的源码写的。
在新建好工程文件后,需要包含XnCppWrapper头文件,且需在Qt工程中设置好头文件目录和库文件目录。
使用OpenNI读取颜色图和深度图的步骤如下(这个是程序的核心部分):
1. 定义一个Context对象,并 调用该对象的Init()方法来进行初始化。
2. 定义一个XnMapOutputMode格式对象,设置好分图像分辨率和帧率。
3. 定义颜色图和深度图的节点对象,并用其Create()方法来创建,参数为Context对象.
4. 设置颜色和深度图的输出模式,调用的方法是SetMapOutputMode();参数为步骤2中定义和设置好了的XnMapOutputMode对象。
6. 如果深度图和颜色图在一张图上显示,则必须对深度图像进行校正,校正的方法是调用深度图的如下方法:.GetAlternativeViewPointCap().SetViewPoint();
7. 调用context对象的StartGeneratingAll()来开启设备读取数据开关。
8. 调用context对象的更新数据方法,比如WaitAndupdateAll()方法。
9. 定义颜色图和色彩图的ImageMetaData对象,并利用对应的节点对象的方法GetMetaData(),将获取到的数据保存到对应的ImageMetaData对象中。
10. 如果需要将深度图转换成灰度图来显示,则需要自己将深度值转换成0~255的单通道或者多通道数据,然后直接用来显示。
注意如果没有设置视觉校正,则深度图的显示与颜色图的显示会出现对应不上的情况,后面的实验可以看出这2者的区别,另外对于是否需要设置镜像就要看自己的具体应用场合了。
?
实验结果:
下面分别分是否设置图像镜像,是否对深度图像进行校正来给出实验结果.
无镜像无校正:
?
无镜像有校正:
?
有镜像无校正:
?
有镜像有校正:
?
从有无镜像可以看出,设置镜像的效果与字面的理解是一样的,即有镜像时就相当于取镜子中的图像。有无校正可以看出,没有校正时,深度图片和颜色图片同一个物体都对应不起来,可以看下天花板上的吊灯就可以发现,没校正,2者不重合,且相差不少。有校正时效果就好多了,只是此时的深度图像显示的范围要稍小些。
?
实验主要部分代码及注释(附录有工程code下载链接):
首先来个最小工程,即去掉那些错误处理代码:
main.cpp:
#include QtGui
#include XnCppWrapper.h //包含OpenNI的头文件
using namespace xn;//使用OpenNI库中的命名空间
//全局的OpenNI object
Context g_context;
ImageGenerator g_image_generator;
DepthGenerator g_depth_generator;
//全局的Qt Object
QGraphicsPixmapItem *g_image_map;
QGraphicsPixmapItem *g_depth_map;
您可能关注的文档
- 2弘扬社会主义核心价值观 提高道德修养①.doc
- 2级培训与开发(上).ppt
- 33章 合同法律制度.doc
- 345优质高校课堂.doc
- 3A学习品质说明书.doc
- 3保险的基本原则.ppt
- 3毕业论文规范要求.doc
- 3章 公司法律制度全.ppt
- 3章 再现战争的艺术画卷.doc
- 3表面活性剂化学.ppt
- 《信息技术应用基础》课件——3.5 任务16 合并邮件.pptx
- 《信息技术应用基础》课件——3.6 任务17 WPS综合应用.pptx
- 《信息技术应用基础》课件——5.1 任务24 掌握演示文稿的基本操作.pptx
- 《信息技术应用基础》课件——4.5 任务22 利用表格对数据进行分析.pptx
- 2026年春新版部编版二年级下册语文第七单元 阅读(18-21课) 教案(含教学反思).docx
- 2026年春新版部编版二年级下册语文第八单元 阅读(22-24课) 教案(含教学反思).docx
- 2026年春新版部编版二年级下册语文第六单元 阅读(14-17课) 教案(含教学反思).docx
- 2026年春新版部编版二年级下册语文第五单元 阅读(11-13课) 教案(含教学反思).docx
- 2026年春新版部编版二年级下册语文第三单元 识字(1-4课) 教案(含教学反思).docx
- 2026年春新版部编版二年级下册语文第四单元 阅读(8-10课) 教案(含教学反思).docx
原创力文档

文档评论(0)