使用reprojectImageTo3D(..),我得到了带有3D点的Mat。现在,我想访问这些点的x,y,z值。但是我不知道该怎么办?

我尝试过这样的事情:

(new3d.row(100).col(1)).x

但这似乎并不以这种方式工作。

非常感谢您的帮助。

最佳答案

从[文档]中您可以看到:



_3dImage –输出与视差大小相同的3通道浮点图像。 _3dImage(x,y)的每个元素都包含根据视差图计算的点(x,y)的3D坐标。

因此,您的new3d矩阵是3通道浮点,即CV_32FC3

您可以访问其值,例如:

for(int r=0; r<new3d.rows; ++r)
{
    for(int c=0; c<new3d.cols; ++c)
    {
        Vec3f point = new3d.at<Vec3f>(r,c);
        // x = point[0];
        // y = point[1];
        // z = point[2];

        std::cout << point << std::endl;
    }
}

关于c++ - 从cv::Mat获取x,y,z线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33858570/

10-09 23:10