Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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
Python 如何估计OpenCV中两个摄像头的位置?_Python_Opencv_Structure From Motion - Fatal编程技术网

Python 如何估计OpenCV中两个摄像头的位置?

Python 如何估计OpenCV中两个摄像头的位置?,python,opencv,structure-from-motion,Python,Opencv,Structure From Motion,我有两组来自两幅图像的对应点。我估计了编码摄像机之间转换的基本矩阵: E, mask = cv2.findEssentialMat(points1, points2, 1.0) 然后,我提取了旋转和平移组件: points, R, t, mask = cv2.recoverPose(E, points1, points2) 但是,我如何实际获得两个摄影机的摄影机矩阵,以便使用cv2.triangulatePoints生成一个小点云?我所做的是: 输入: pts_l - set of n 2d

我有两组来自两幅图像的对应点。我估计了编码摄像机之间转换的基本矩阵:

E, mask = cv2.findEssentialMat(points1, points2, 1.0)
然后,我提取了旋转和平移组件:

points, R, t, mask = cv2.recoverPose(E, points1, points2)
但是,我如何实际获得两个摄影机的摄影机矩阵,以便使用
cv2.triangulatePoints
生成一个小点云?

我所做的是:

输入:

pts_l - set of n 2d points in left image. nx2 numpy float array
pts_r - set of n 2d points in right image. nx2 numpy float array

K_l - Left Camera matrix. 3x3 numpy float array
K_r - Right Camera matrix. 3x3 numpy float array
代码:

输出:

point_3d - nx3 numpy array

你到底试过什么?@barny我能想到的唯一一件事是你不能得到摄像机的位置,所以你必须假设一个摄像机是3x4零矩阵,另一个是R | t问题的标题和公认的答案不匹配。可能标题应该改为如何从两个视图估计摄影机姿势。估计摄像机位置至少比假设一台摄像机位于原点并估计另一台摄像机的相对位置多了一步。多亏了Yonathan,您在左图中所述的pts_l和pts_r点是否正确。nx3 numpy浮点数组pts_r-左图中的2d点。nx3 numpy浮点阵列。但是请注意,我更喜欢指定左和右,而不是数字。减少困惑的机会如果这是一个愚蠢的问题,我很抱歉,但是你如何获得
K_L
K_R
?@jihan1008你需要使用校准摄像机的数据,或者自己校准摄像机。如何校准内部函数@你能告诉我从点4d开始的线是什么吗?我不明白。
point_3d - nx3 numpy array