在增强现实应用程序中,我检测到场景中的图像,因此我知道imagePoints,但我正在寻找的对象(objectPoints)是一个虚拟标记,只是存储在内存中以在场景中搜索,所以我不知道它在太空中的位置。
我阅读的书(掌握OpenCV与实际计算机视觉项目)传递它,好像标记是1x1矩阵,它工作正常,怎么样?
没有解决PNP需要知道对象的大小及其投影,所以我们知道应用了多少比例?
答案 0 :(得分:0)
假设您正在寻找物理对象,您应该将模型上的点的3D坐标(通过投影)传递到图像中的2D点。您可以使用任何参考框架,solvePnp的结果将为您提供该参考框架中摄像机的位置和方向。
如果想要在相机空间中获取物体位置/方向,则可以通过从solvePnp获得的变换的倒数来变换两者,以便将相机移动到原点。
例如,对于大小为2x2x2的立方体对象,可见角可能类似于:{-1,-1,-1},{1,-1,-1},{1,1,-1}.....
答案 1 :(得分:0)
您必须传递要与图像一起映射的真实世界对象的3D坐标。缩放和旋转值取决于您使用的坐标系。
这并不像听起来那么困难。有关头部姿势估计,请参阅this blog post。有关代码的更多详细信息。