我正在学习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]])
我该如何修复它们,使其不会尝试优化它们?
1条答案
按热度按时间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],所以它应该足以修复这些问题。