我正在使用calibrateCamera
功能。
我如何使用两个标志?我想一起使用CALIB_USE_INTRINSIC_GUESS
和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 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
语法是错误的,还是有些东西我不知道?
答案 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)