如何在OpenCV的calibrateCamera中将失真系数固定为0?

klsxnrf1  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(141)

我正在学习OpenCV的calibrateCamera函数,并试图将失真系数固定为0,因为我现在不想考虑失真。

# reprojection error, calibration matrix, distortion, rotation and translation vectors
    ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(
        [3d_points.astype(np.float32)], 
        [image_points.astype(np.float32)], 
        (img_raw.shape[1], img_raw.shape[0]), None, distCoeffs = np.zeros((5, 1),dtype=np.float32))

然而,在输出中,我仍然得到非零dist系数

dist
array([[-0.06402103],
       [ 0.76996236],
       [ 0.05764124],
       [ 0.02921579],
       [-1.12958531]])

我该如何修复它们,使其不会尝试优化它们?

xpszyzbs

xpszyzbs1#

您可以将不同的标志添加在一起,如flag=cv2.CALIB_FIX_K1+cv2.CALIB_FIX_K2+cv2.CALIB_FIX_K3+cv2.CALIB_ZERO_TANGENT_DIST
我相信默认情况下,OpenCV只给出[k1 k2 p1 p2 k3],所以它应该足以修复这些问题。

相关问题