我如何从不同角度拍摄物体的两张图像,并根据另一点绘制极线?
例如,我可以使用鼠标在左侧图片上选择一个点,程序将用圆圈标记该点,然后在右侧图像上绘制一条与我标记的点相对应的极线]
我有2个XML文件,其中包含3x3相机矩阵和每张图片的3x4投影矩阵列表。
相机矩阵为K
左图的投影矩阵为P_left
右图的投影矩阵为P_right
我想:
在左侧图像中选择像素坐标(x,y)(通过鼠标单击)
用p
计算左图像中的点K^-1 * (x,y,1)
计算P+
的伪逆矩阵P_left
(使用np.linalg.pinv
)
计算右图的子极e'
:P_right * (0,0,0,1)
计算e'_skew
的偏斜对称矩阵e'
计算基本矩阵F
:e'_skew * P_right * P+
计算右图的对极线l'
:F * p
计算右侧图像中的点p'
:P_right * P+ * p
将p'
和l
转换回像素坐标
使用cv2.line
至p'
和l
绘制一条线>
我如何从不同角度拍摄物体的两张图像,并根据另一点绘制极线?例如,我可以使用鼠标在左侧图片上选择一个点,......>
我几天前刚刚做过,而且效果很好。这是我使用的方法:
getCorners
和calibrateCamera
,您可以找到很多关于此的教程,但听起来您已经有了此信息)