C++ 如何使用Triclops和FlyCapture SDK从PointGrey BumbleBee2立体相机创建深度贴图?

C++ 如何使用Triclops和FlyCapture SDK从PointGrey BumbleBee2立体相机创建深度贴图?,c++,depth-buffer,stereo-3d,C++,Depth Buffer,Stereo 3d,我有大黄蜂2号立体相机和两个提到的SDK 在我的程序中,我成功地从中捕获了一段视频,校正了立体图像,并得到了一张视差图。下一件事我想有一个深度图类似于一个,Kinect给出 Triclops的文档相当简短,它只引用功能,没有典型的工作流描述。示例中描述了工作流 到目前为止,我已经找到了两个相关函数:triclopsrcdxtxtoxyz()函数族和triclopsExtractImage3d()函数族 第一个系列中的函数计算单个像素的x、y和z坐标。Z坐标与深度(以米为单位)完全对应。但是,要使

我有大黄蜂2号立体相机和两个提到的SDK

在我的程序中,我成功地从中捕获了一段视频,校正了立体图像,并得到了一张视差图。下一件事我想有一个深度图类似于一个,Kinect给出

Triclops的文档相当简短,它只引用功能,没有典型的工作流描述。示例中描述了工作流

到目前为止,我已经找到了两个相关函数:
triclopsrcdxtxtoxyz()
函数族和
triclopsExtractImage3d()
函数族

第一个系列中的函数计算单个像素的x、y和z坐标。Z坐标与深度(以米为单位)完全对应。但是,要使用此函数,我应该创建两个嵌套循环,如
stereo3dpoints
示例所示。这会带来太多的开销,因为每个调用都会返回两个以上的坐标

第二个函数,
TriclopseTractImage3D()
,总是返回错误
TriclopsErrorInvalidParameter
。文档只说“上下文和TriclopsImage3d之间存在几何不匹配”,这对我来说并不清楚

Triclops 3.3.1 SDK的示例没有显示如何使用它。谷歌带来了3.3.1中没有的功能

我尝试将上面链接中的第253-273行添加到当前的stereo3dpoints中,得到了这个错误

有人对此有经验吗

使用
triclopsExtractImage3d()
有效还是过时

我还试着绘制
视差
z
的值,这些值是从
triclopscrcdxtoxyz()
获得的

该图显示了几乎完全相反的比例:


也就是说
z=k/视差
。但是
k
在整个图像中不是常数,它从大约2.5e-5到1.4e-3变化,即两个数量级。因此,一次计算这个值并永远使用是不正确的。

可能有点晚了,你自己计算出来了,但是:

要使用triclopsExtractImage3d,必须先创建一个3D图像

TriclopsImage3d *depthImage;
triclopsCreateImage3d(triclopsContext, &depthImage);
triclopsExtractImage3d(triclopsContext, depthImage);
triclopsDestroyImage3d(&depthImage);