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三维点云显示窗口所示,天花板的两个日光灯对应深度图和彩色图的区域并没有重合,而是错位了)。