【问题标题】:OpenCV: How to find projection matrix from calibrateCamera() output?OpenCV:如何从 calibrateCamera() 输出中找到投影矩阵?
【发布时间】:2016-08-15 23:08:47
【问题描述】:

我能够在 Python 中使用 OpenCV 计算相机校准。但是,我真正需要的是投影矩阵。查看文档中的方程,看起来这是P = K[R|T],其中 K 是内在矩阵,R 是旋转矩阵,T 是平移向量。这是我用来计算投影矩阵的代码:

ret, matrix, distCoef, rvecs, tvecs = cv2.calibrateCamera([world_points], [corners], gray.shape[::-1], flags=cv2.CALIB_USE_INTRINSIC_GUESS)

K = matrix
R = cv2.Rodrigues(rvecs[0])[0]
T = tvecs[0]
RT = np.concatenate((R,T),axis=1)
P = np.dot(K, RT)

这是正确的吗?据我了解,我应该可以通过 P * [x;是; z; 1] 其中 (x,y,z) 是一个世界点,输出应该是对应的像素坐标。我试过这个,但输出看起来非常错误。这是否意味着它是一个糟糕的校准,还是我构建的 P 不正确?

【问题讨论】:

    标签: python opencv matrix computer-vision vision


    【解决方案1】:

    我想我修复了它——事实证明,我给 calibrateCamera() 提供了一些错误的参数。我在很大程度上基于 OpenCV 示例文件夹附带的 calibrate.py 重写了代码。我遵循了我在原始帖子中提到的其余概念(构造 P、检查重投影错误等),现在它给了我更合理的结果。

    【讨论】:

      猜你喜欢
      • 2013-04-12
      • 2020-10-22
      • 2013-05-14
      • 2015-03-06
      • 2019-03-05
      • 2017-04-28
      • 2013-08-22
      • 1970-01-01
      • 2012-03-27
      相关资源
      最近更新 更多