Opencv 基于模型的姿态估计

Opencv 基于模型的姿态估计,opencv,pose-estimation,Opencv,Pose Estimation,我想使用opencv来估计know 3D对象的姿势。如果三维模型的点和它们在图像上对应的点已经给出,我可以使用solvePnP。我的问题是:如何找到已知的3D模型与其在图像上的投影之间的对应关系? 非常感谢poseMatrix=solvePnP(objectPoints,imagePoints) imagePoint_computed=objectPoints[i]*poseMatrix*cameraMatrix 找到j在哪个位置 imagePoints[j]~=计算的imagePoint\u

我想使用opencv来估计know 3D对象的姿势。如果三维模型的点和它们在图像上对应的点已经给出,我可以使用solvePnP。我的问题是:如何找到已知的3D模型与其在图像上的投影之间的对应关系? 非常感谢

poseMatrix=solvePnP(objectPoints,imagePoints)

imagePoint_computed=objectPoints[i]*poseMatrix*cameraMatrix

找到j在哪个位置

imagePoints[j]~=计算的imagePoint\u


objectPoints[j]和imagePoints[i]是对应的点。

一旦3d模型中的点与场景中的点匹配,就必须应用cv::FindHostography()。此函数计算一个矩阵,该矩阵将三维模型中的任意点投影到场景中。实际上,单应性计算只需要4个匹配项。

这一直困扰着我,所以我一直在寻找。 SoftPOSIT算法就是您想要的。
有一个matlab实现,一些人已经翻译成c/c++

你所说的通信是什么意思?你是在说增强现实吗?我不是在明确地说AR。AR可以是需要姿势估计的用例之一。通过通信,我的意思是,已知3D模型的哪个点投影到图像上的哪个点。比如在这个博客里。三维模型的点是已知的,并且投影到图像上的该三维模型的点也是已知的。我希望我能很好地解释它。但是solvePnP不一定要有相应顺序的objectpoints和imagepoints吗?这就是问题所在,他不知道哪个图像点对应哪个对象点。您可以运行一些循环来尝试不同的通信,但这并不可靠。