OpenCV学习笔记(20)Kinect + OpenNI + OpenCV + OpenGL 组合体验

本文介绍了如何使用OpenCV、OpenNI和OpenGL结合处理Kinect的深度数据和图像数据,包括视角调整、三维点云坐标的计算以及利用OpenGL显示三维点云数据的方法。通过源码修改和OpenGL响应函数,实现了深度图与彩色图的融合以及交互式的三维点云显示。
摘要由CSDN通过智能技术生成

 

1. 项目源码详见:http://www.opencv.org.cn/forum.php?mod=viewthread&tid=13042&extra= (2014-05-21 更新链接)

2. 已更新了 OpenGL 部分的代码,实现了点云数据的三角化。

3. 关于“Can not open a capture object”问题,我机子上运行没遇到,不过大家可以尝试以下方案:

按照下文改写好代码并重新用Cmake和VS2008编译好后,在当前项目的 project->properties->Configuration Properties中的C/C++ -> additional Library directories 和 Linker -> additional Include directories 分别添加上OpenNI 的include 和 lib 。

参考自项目源码发布帖中 silan 童鞋的回复。谢谢!

============================================================= 

 

前几天刚入手了期待已久的 Kinect ,用于实验室机器人项目的视觉导航与环境理解。

首先要做的是破解-->连接PC-->获取深度数据和图像数据-->三维点云显示 这么几项基本工作。

开始仿照的是 饮水思源 博客的方法(使用VS2008在windows平台上试用Kinect ),利用 CL-NUI-Platform 来破解,它的最新版是1.0.0.1210,但我在XP上用会当机,后来换 1.0.0.1121 版的就可以用了。CL NUI 提供了十分简便易用的接口,在OpenCV 上调用很简单,另外它还提供了 Kinect 底座马达的控制接口和 LED 灯颜色的选择接口,其例程中可以操控 Kinect 上下摆动。如果只需要获取深度数据和图像数据,CL NUI 就够用了。不过要做深入的应用,比如人体姿态识别、骨架提取、深度数据与图像数据的合并等等,就该用到 OpenNI 了。

国内的 CNKINECT 是个不错的 Kinect 开发论坛,版块丰富,有很多资料可供借鉴。我通过论坛介绍的 方法 成功配置了 OpenNI + Kinect,先是用最新版的 OpenNI+SensorKinect+NITE ,但在 XP 下不能正常运行,可能跟 .net 平台有关,老实按上面论坛的方法装就成功了。另外用 CMake + VS2008 装了最新的 OpenCV_SVN,开始试过在 CMake 里选择 With TBB,但诡异的是 TBB 似乎只适用于VS2005,在 VS2008 编译后试用里面的 samples 老是提示报错找不到msvcp80.dll,重新用 CMake 配置取消了 With TBB,就一切正常了。

 

一、深度摄像机的视角调整 与 深度/彩色图像的合并

通过研究 OpenCV_SVN 与 OpenNI 相关的代码(cap_openni.cpp)发现,OpenCV 目前只支持对Kinect的深度图、视差图和彩色/灰度图及相关属性的读取,更进一步的设置还没有实现。参考台湾 Heresy’space 的博客文章《透過 OpneNI 合併 Kinect 深度以及彩色影像資料》,想把深度图和彩色图合并显示,但是由于 Kinect 的深度摄像机和彩色摄像机是在不同的位置,而且镜头本身的参数也不完全相同,所以两个摄像机所取得的画面会有些微的差异(如图1 左下角子图OpenGL三维点云显示窗口所示,天花板的两个日光灯对应深度图和彩色图的区域并没有重合,而是错位了)。

评论 79
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值