vwv*_*wvw 6 opencv computer-vision unity-game-engine pose-estimation opencv-solvepnp
我们正在开发一个 AR 应用程序,其中需要将对象的 3D 模型叠加到对象的视频流上。Unity 场景包含 3D 模型,并且相机正在拍摄 3D 对象。相机姿势最初未知。
\n\n\xe2\x96\xb6我们尝试过的
\n\n我们没有找到一个好的解决方案来直接在 Unity 中估计相机位姿。因此,我们使用了OpenCV,它提供了广泛的计算机视觉函数库。特别是,我们找到Aruco 标签,然后将其匹配的 3D-2D 坐标传递给solvePnp.
solvePnp返回与现实相符最多几厘米的相机位置。我们还验证了较低的重投影误差。
每个使用过的标签角都会被重新投影并在图像上显示为红点。如您所见,差异很小。
\n\n这些结果看起来不错,应该足以满足我们的用例。\n因此,我们根据现实和 OpenCV 验证相机姿势。
\n\n\xe2\x96\xb6问题
\n\n然而,当将相机放置在 Unity 场景中的估计姿势时,3D 对象无法很好地对齐。
\n\n\n\n在此 Unity 屏幕截图中,您可以看到虚拟(Unity 对象)绿色标签的视图与视频源中的真实标签不匹配。
\n\n\xe2\x96\xb6可能的根本原因
\n\n我们确定了可以解释 Unity 和 OpenCV 之间不匹配的不同可能根本原因:
\n\n\xe2\x96\xb6注释
\n\n我们的相机具有很大的视野(115\xc2\xb0)。
\n\n传递到 OpenCV 和 Unity 的图像都已经很好地不失真。
\n\n我们浏览了大部分标记为 OpenCV 和 Unity 的 SO 问题。大多数 是不同的坐标系和旋转约定。在我们的例子中,这似乎不是问题,因为相机显示在 3D Unity 场景中的预期位置。
\n\n\xe2\x96\xb6问题
\n\n| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |