如何在Python OpenCV中用一对立体图像计算对极线

问题描述 投票:1回答:1

我如何从不同角度拍摄物体的两张图像,并根据另一点绘制极线?

例如,我可以使用鼠标在左侧图片上选择一个点,程序将用圆圈标记该点,然后在右侧图像上绘制一条与我标记的点相对应的极线]

我有2个XML文件,其中包含3x3相机矩阵和每张图片的3x4投影矩阵列表。

相机矩阵为K左图的投影矩阵为P_left右图的投影矩阵为P_right

我想:

  1. 在左侧图像中选择像素坐标(x,y)(通过鼠标单击)

  2. p计算左图像中的点K^-1 * (x,y,1)

  3. 计算P+的伪逆矩阵P_left(使用np.linalg.pinv

  4. 计算右图的子极e'P_right * (0,0,0,1)

  5. 计算e'_skew的偏斜对称矩阵e'

  6. 计算基本矩阵Fe'_skew * P_right * P+

  7. 计算右图的对极线l'F * p

  8. 计算右侧图像中的点p'P_right * P+ * p

  9. p'l转换回像素坐标

  10. 使用cv2.linep'l绘制一条线>

我如何从不同角度拍摄物体的两张图像,并根据另一点绘制极线?例如,我可以使用鼠标在左侧图片上选择一个点,......>

python opencv
1个回答
2
投票

我几天前刚刚做过,而且效果很好。这是我使用的方法:

  1. 校准摄像机以获取摄像机矩阵和失真矩阵(使用openCV getCornerscalibrateCamera,您可以找到很多关于此的教程,但听起来您已经有了此信息)
© www.soinside.com 2019 - 2024. All rights reserved.