1

我正在尝试使用此代码通过在图片中定位平面图像来查找相机位置:

https://docs.opencv.org/3.3.1/d1/de0/tutorial_py_feature_homography.html

对于这张图片,它可以正常工作:

在此处输入图像描述

并找到模式。我使用 cv2.projectPoints 在背景图片上绘制图像:

在此处输入图像描述

但有时solvePnP会返回疯狂的结果,例如这张图片:

在此处输入图像描述

如果我重新投影模式,我会得到疯狂的图像位置:

在此处输入图像描述

对于这种情况,我已经验证了 SIFT 点,它们看起来正确并且匹配:

在此处输入图像描述

我尝试使用solvePnPRansac而不是solvePnP,但它没有帮助,估计位置仍然很糟糕。可能是什么原因,我该如何解决这个问题?

4

1 回答 1

3

好的,在这种情况下,我已经设法通过将失真矩阵设置为来改进姿势估计,np.array([])因为我已经在 SIFT 之前校正了图像。同样适用于cv2.projectPoints,也无需为此函数提供失真系数。

于 2017-12-14T07:19:28.637 回答