使用两个标志OpenCv的calibrateCamera功能时出错

时间:2016-08-07 14:16:01

标签: python opencv

我正在使用calibrateCamera功能。

我如何使用两个标志?我想一起使用CALIB_USE_INTRINSIC_GUESSCALIB_FIX_PRINCIPAL_POINT,但我不确定语法。当我只使用第一个标志时,代码运行正常,但是当我使用以下代码使用两个标志时:

a,camMatrix, c, rvec, tvec = cv2.calibrateCamera([obj_points], [img_points], size, camera_matrix, dist_coefs, flags=(cv2.CALIB_USE_INTRINSIC_GUESS and cv2.CALIB_FIX_PRINCIPAL_POINT)) 

我收到错误:

  

OpenCV错误:在cvCalibrateCamera2,文件D:\ Build \ OpenCV \ opencv-3.1.0 \ modules \ calib3d \ src \ calibration.cpp中,参数不正确(对于非平面校准装备必须指定初始内部矩阵),第1440行   Traceback(最近一次调用最后一次):     File" C:/ Bdrive / AlgoSurg intern / DLT / CamCalTrial2.py",109行in       a,camMatrix,c,rvec,tvec = cv2.calibrateCamera([obj_points],[img_points],size,camera_matrix,dist_coefs,flags =(cv2.CALIB_USE_INTRINSIC_GUESS和cv2.CALIB_FIX_PRINCIPAL_POINT))   cv2.error:D:\ Build \ OpenCV \ opencv-3.1.0 \ modules \ calib3d \ src \ calibration.cpp:1440:错误:( - 5)对于非平面校准装备,必须在函数中指定初始内在矩阵cvCalibrateCamera2

语法是错误的,还是有些东西我不知道?

1 个答案:

答案 0 :(得分:2)

你必须这样做:

a,camMatrix, c, rvec, tvec = cv2.calibrateCamera([obj_points], [img_points], size, camera_matrix, dist_coefs, flags=(cv2.CALIB_USE_INTRINSIC_GUESS + cv2.CALIB_FIX_PRINCIPAL_POINT))

并且标志周围不需要括号,所以这也是可以接受的:

a,camMatrix, c, rvec, tvec = cv2.calibrateCamera([obj_points], [img_points], size, camera_matrix, dist_coefs, flags=cv2.CALIB_USE_INTRINSIC_GUESS + cv2.CALIB_FIX_PRINCIPAL_POINT)