Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么opencv';当提供相同的点向量时,是否返回非原点位置?_Opencv - Fatal编程技术网

为什么opencv';当提供相同的点向量时,是否返回非原点位置?

为什么opencv';当提供相同的点向量时,是否返回非原点位置?,opencv,Opencv,无意中,我试图估算图像相对于自身的相对位置(不要问)。我希望得到0平移和0旋转的结果 令人惊讶的是,我得到了一个非零的翻译结果。事实上,我得到了一个相当重要的结果:.0825-0.0825 本质上,我的代码如下: cv::Point2d pp(u0, v0); cv::Mat R, t, mask; cv::Mat E = cv::findEssentialMat(points1, points2, focal, pp, cv::RANSAC, 0.999, 1.

无意中,我试图估算图像相对于自身的相对位置(不要问)。我希望得到0平移和0旋转的结果

令人惊讶的是,我得到了一个非零的翻译结果。事实上,我得到了一个相当重要的结果:
.0825-0.0825

本质上,我的代码如下:

cv::Point2d pp(u0, v0);
        cv::Mat R, t, mask;
        cv::Mat E = cv::findEssentialMat(points1, points2, focal, pp, cv::RANSAC, 0.999, 1.0, mask);
        cv::recoverPose(E, points1, points2, R, t);
在上述代码中,t!=0我的问题是:当点S1和点S2相同时,recoverPose的非零结果有效吗?如果是,原因是什么?

来自文档: “通过分解,您只能得到翻译的方向”


平移向量的构造方式是,平移的范数等于1。

如果减小最大距离阈值,会发生什么?要回答您的问题,您可能需要了解5点解算器在相同点对中的工作/行为。在这种情况下,基本矩阵的条件不好。对于8点算法,您可以在奇异值分解之前检查对应矩阵的条件数,正如米卡所说。我不知道这是否适用于OpenCV使用的5点算法。无论如何,在某些情况下,场景的结构不允许您获得有效的基本矩阵(例如,纯旋转),并且您需要一些其他模型,例如单应性。搜索GRIC分数以了解决定基本矩阵或单应性的一种方法。@Mika FYI将距离阈值降至0.1。这样做对本案例没有影响。您能用超链接功能链接答案中的文档吗?用文档链接更新您的答案。这样对其他人有用。