如何计算Python中的OpenCV摄像头投影



我正在尝试使用opencv 2.4在python 2.7中为我的相机计算投射_matrix(我正在使用PS Eye)。我需要Cv2.triangulatepoints()。我已经使用cv2.calibratecamera()(使用OpENCV示例的Calibibrate.py)进行了校准,因此我有RMS,Camera_matrix,dist_coefs,rvecs和tvecs。

但是我有一个问题实际上是从这些参数中计算proment_matrix的(我没有在线找到任何python示例)。

ps:我必须校准每个PS眼相机吗?我有3个,我想在3D空间中跟踪对象。

如果您只有一个相机,则投影矩阵应等于camera_matrix。只有一个并发症。

cv2.triangulatepoints定义可与来自2个不同摄像机的2个视图一起使用。

文档还指出

该函数重建了3维点(在同质中 坐标)通过使用立体声摄像机使用其观察结果。 可以从 stereorectify()。

获得预测矩阵

是的,您必须校准每个相机并校准每对摄像机,以便检索每个相机矩阵和旋转矩阵以及从一个相机到"主相机"的翻译向量。

对于给定的几个相机,带有K1和K2的相机矩阵,

的确如此

主相机的投影矩阵(摄像机是世界参考系统)是

P1 = K1*[I | z]

其中i是识别矩阵,而z是第四列中的0,0,0向量。您可以认为

  1 0 0 0
  0 1 0 0 
  0 0 1 0

如果r是2个摄像机之间的旋转矩阵和两个摄像机之间的距离,则第二个投影矩阵为

P2 = K2*[R | t]

在python中,如果您无法从立体看法获得矩阵,则手动执行它的一种方法是

import numpy as np
P = np.concatenate((np.dot(K,R),np.dot(K,t)), axis = 1)

相关内容

  • 没有找到相关文章

最新更新