我有BumbleBee 2立体摄像机和两个提到的SDK。
我已经设法在程序中捕获了视频,纠正了立体图像并获得了视差图。我想拥有的第二件事是Kinect给出的类似于深度图的深度图。
Triclops的文档非常简短,它仅引用函数,而没有典型的工作流描述。示例中描述了工作流程。
到目前为止,我发现了2个相关函数:triclopsRCDxxToXYZ()
函数家族和triclopsExtractImage3d()
函数家族。
第一个族的函数计算单个像素的x,y和z坐标。 Z坐标完美对应于以米为单位的深度。但是,要使用此功能,我应该创建两个嵌套循环,如stereo3dpoints
示例所示。这会产生太多开销,因为每个调用都会返回两个以上的坐标。
第二个函数triclopsExtractImage3d()
始终返回错误TriclopsErrorInvalidParameter
。该文档只说“上下文和TriclopsImage3d之间存在几何不匹配”,这对我来说还不清楚。
Triclops 3.3.1 SDK的示例未显示如何使用它。 Google带来了example from Triclops SDK 3.2,它在3.3.1中不存在。
我尝试将上面的链接中的第253-273行添加到当前的stereo3dpoints-出现该错误。
有人有经验吗?
使用triclopsExtractImage3d()
是否有效或已过时?
我还尝试绘制从disparity
获得的z
与triclopsRCDxxToXYZ()
的值。
该图显示了几乎精确的反比例关系:。
那是z = k / disparity
。但是k
在整个图像中不是恒定的,它在大约2.5e-5到1.4e-3之间变化,即两个数量级。因此,一次计算并永久使用该值是不正确的。
最佳答案
也许有点晚了,您自己弄清楚了,但是:
要使用triclopsExtractImage3d
,您必须先创建3dImage。
TriclopsImage3d *depthImage;
triclopsCreateImage3d(triclopsContext, &depthImage);
triclopsExtractImage3d(triclopsContext, depthImage);
triclopsDestroyImage3d(&depthImage);
关于c++ - 如何使用Triclops和FlyCapture SDK从PointGrey BumbleBee2立体摄像机创建深度图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21775081/