OpenCV docs for solvePnp
在增强现实应用程序中,我检测到场景中的图像,所以我知道imagePoints,但是我正在寻找的对象(objectPoints)是一个虚拟标记,只是存储在内存中以在场景中搜索,所以我不知道它在空间中的位置。
我正在阅读的书(掌握OpenCV与实用计算机视觉项目)通过它,如果标记是一个1x1矩阵,它工作得很好,如何?
solvePnP不需要知道对象的大小和它的投影,这样我们就知道应用了多少比例?
假设您正在寻找一个物理对象,您应该将模型上点的3D坐标(通过投影)映射到图像中的2D点。你可以使用任何参考系,solvePnp的结果会给你相机在那个参考系中的位置和方向。
如果你想在相机空间中获得物体的位置/方向,那么你可以通过从solvePnp中得到的变换的逆来变换两者,这样相机就会移动到原点。
例如,对于大小为2x2x2的立方体对象,可见角可能类似于:{-1,-1,-1},{1,-1,-1},{1,1,-1}.....
您必须传递您想要与图像映射的现实世界对象的3D坐标。缩放和旋转值将取决于您使用的坐标系。
这并不像听起来那么难。请看这篇关于头部姿势估计的博客文章。查看代码