我想知道如何将我从全分辨率彩色图像中获取的坐标转换为深度流中的坐标。
例如,我从全分辨率颜色中得到 (763,234),我想知道深度图像中的 (x,y,z) 是什么?(顺便说一句,我在 java 中这样做,但 c++ 中的答案可能很容易翻译)
提前谢谢
我想知道如何将我从全分辨率彩色图像中获取的坐标转换为深度流中的坐标。
例如,我从全分辨率颜色中得到 (763,234),我想知道深度图像中的 (x,y,z) 是什么?(顺便说一句,我在 java 中这样做,但 c++ 中的答案可能很容易翻译)
提前谢谢
如果您的输入设备允许,您可以简单地使用“ GetAlternativeViewPointCap ”,如下面的 C++ 代码所示。在这种情况下,深度图会自动转换,以便与彩色图像对齐。因此,给定彩色图像上像素的坐标 (x,y),查询同一位置的深度图就足够了。
m_context.InitFromXmlFile(path,m_scriptNode);
m_context.FindExistingNode(XN_NODE_TYPE_IMAGE, m_imageGenerator);
m_context.FindExistingNode(XN_NODE_TYPE_DEPTH, m_depthGenerator);
if (m_depthGenerator.IsCapabilitySupported(XN_CAPABILITY_ALTERNATIVE_VIEW_POINT)) {
m_depthGenerator.GetAlternativeViewPointCap().SetViewPoint(m_imageGenerator);
}
如果这种方法不可行,您应该估计两个相机之间的转换。诸如“计算机视觉中的多视图几何”之类的书描述了所有必要的背景和算法。