FREENECT_DEPTH_REGISTERED对libfreenect没有影响
FREENECT_DEPTH_REGISTERED has no effect with libfreenect
我正在libfreenect驱动程序上使用Kinect(原始Xbox版本)(顺便说一下,我在Ubuntu 12.04上)。我已经从 git 克隆了最新版本并按照此处的说明手动安装它:http://openkinect.org/wiki/Getting_Started#Ubuntu_Manual_Install
我想访问注册的深度值。据我了解,Kinect 是经过工厂校准的,并且有一个查找表将深度像素与正确的 RGB 像素相匹配。
我可以很好地打开 Kinect 并检索原始的 11 位深度数据。这为我的值提供了从 730 到 1045 的非线性范围,距离从 1 到 7.5 米。
运行device->setDepthFormat(FREENECT_DEPTH_MM);
会使 Kinect 输出距离以毫米为单位,因此 setDepthFormat 似乎有效。
运行device->setDepthFormat(FREENECT_DEPTH_REGISTERED);
似乎没有效果,因为只输出原始深度值。我错过了什么?
FREENECT_DEPTH_MM
和 FREENECT_DEPTH_REGISTERED
都应返回以毫米为单位的深度。不同之处在于后者对齐以匹配RGB视频图像。
libfreenect.h
中的freenect_depth_format
枚举提供了以下选项:
FREENECT_DEPTH_11BIT = 0, /**< 11 bit depth information in one uint16_t/pixel */
FREENECT_DEPTH_10BIT = 1, /**< 10 bit depth information in one uint16_t/pixel */
FREENECT_DEPTH_11BIT_PACKED = 2, /**< 11 bit packed depth information */
FREENECT_DEPTH_10BIT_PACKED = 3, /**< 10 bit packed depth information */
FREENECT_DEPTH_REGISTERED = 4, /**< processed depth data in mm, aligned to 640x480 RGB */
FREENECT_DEPTH_MM = 5, /**< depth to each pixel in mm, but left unaligned to RGB image */
FREENECT_DEPTH_DUMMY = 2147483647, /**< Dummy value to force enum to be 32 bits wide */
来源:libfrenect git 问题页面
配准转换产生的深度图像就像RGB和IR相机物理上位于同一位置一样,并且不会偏移2.5厘米。如果您对细节感到好奇,请查看源代码。
来源: libfreenect 源代码
相关文章:
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 是否有任何区域设置会影响宽字符编码?
- 此分配对速度有影响吗?
- "virtual"对C++析构函数有何影响?
- 如果我对"while"块发表评论,为什么程序会死机?其中的"yield"线有何影响?
- 当在循环中使用时,std::shared_ptr 对该循环的矢量化有任何影响吗?
- 明确定义'static const variable in a struct'对C++ 11 及以上有什么影响吗?
- 每个帧的参考中都有多少性能影响
- "insert"对德克的引用有什么影响?
- 如果订购有什么影响..否则如果按概率陈述
- 预编译的标题有多少影响MFC
- FREENECT_DEPTH_REGISTERED对libfreenect没有影响
- 等号在大括号初始化中是否有影响?例如。 'T a = {}'与'T a{}'
- 更改静态库的"动态 RTL"设置有什么影响?
- 完成的线程是否对 winapi 中的主程序有影响
- 在 c++ 中使用 "this" 关键字对性能有影响吗?
- 额外的继承对对象结构或实例化有影响吗?
- 当do额外的括号有影响时,除了运算符优先级
- Array2的变化对Array(表)有影响
- try-catch对char**返回值有影响