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

Android- Vuforia, calculate the real distance between camera to the image target?

我是 Vuforia 库的初学者,我试图通过 Android studio 上的 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);

你能帮帮我吗?是否有其他函数或代码来计算以厘米为单位的实际距离?

谢谢

据我所知,你应该从原始目标矩阵中取出cam_x、cam_y和cam_z,意思是modelViewMatrix_Vuforia 在你的代码中。你的其余计算没问题。您可以在此处查看正式的 Vuforia 文章:Determining target distance for native Android and iOS.

关于你的第二个问题 - Vuforia 无法知道实际大小。但是,您可以根据您在数据集中定义的目标大小和打印目标的大小自行找到它。这在上面的link中也有解释。