Android-Vuforia,计算相机与图像目标之间的实际距离?

时间:2017-03-10 13:22:28

标签: android opengl-es augmented-reality vuforia

我是Vuforia库的初学者,我试图通过Android工作室上的Vuforia计算AR相机和图像目标之间的真实距离,我在vuforia论坛上找到了这个代码,但是当我尝试时,我没有得到好的结果。

     TrackableResult result = state.getTrackableResult(tIdx);      
     Trackable trackable = result.getTrackable();
     Matrix44F modelViewMatrix_Vuforia =Tool.convertPose2GLMatrix(result.getPose());
     Matrix44F inversMV = SampleMath.Matrix44FInverse(modelViewMatrix_Vuforia);
     Matrix44F invTranspMV = SampleMath.Matrix44FTranspose(inversMV);

        float cam_x = invTranspMV.getData()[12];
        float cam_y = invTranspMV.getData()[13];
        float cam_z = invTranspMV.getData()[14];


        Log.v("QCV", "Posx=" + cam_x + ",posy=" + cam_y + ",posz=" + cam_z);
        float distance = new Float(Math.sqrt(cam_x * cam_x + cam_y * cam_y + cam_z * cam_z));
        Log.v("distance ",""+distance);
你能帮帮我吗?还有另一个函数或代码来计算实际距离为cm?

由于

1 个答案:

答案 0 :(得分:0)

据我所知,您应该从原始目标矩阵中获取cam_x,cam_y和cam_z,这意味着代码中的modelViewMatrix_Vuforia。剩下的计算都没问题。你可以在这里查看正式的Vuforia文章:Determining target distance for native Android and iOS

至于你的第二个问题 - Vuforia无法知道实际尺寸。但是,您可以根据您在数据集中定义的目标的大小和打印目标的大小来自行查找。这也在上面的链接中解释。