使用OpenCv的calibrateCamera函数的两个标志时出错

Har*_*wal 2 python opencv

我正在使用 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))
Run Code Online (Sandbox Code Playgroud)

我收到错误:

OpenCV 错误:cvCalibrateCamera2,文件 D:\Build\OpenCV\opencv-3.1.0\modules\calib3d\src\calibration.cpp,第 1440 行 Traceback 中的参数错误(对于非平面校准装置,必须指定初始固有矩阵) (最近一次通话):文件“C:/Bdrive/AlgoSurg intern/DLT/CamCalTrial2.py”,第 109 行,在 a,camMatrix, c, rvec, tvec = cv2.calibrateCamera([obj_points], [img_points],大小、camera_matrix、dist_coefs、flags=(cv2.CALIB_USE_INTRINSIC_GUESS and cv2.CALIB_FIX_PRINCIPAL_POINT)) cv2.error: D:\Build\OpenCV\opencv-3.1.0\modules\calib3d\src\calibration.cpp: 14 -5) 对于非平面校准装置,必须在函数 cvCalibrateCamera2 中指定初始固有矩阵

要么语法错误,要么我遗漏了什么?

MCS*_*CSH 5

你必须这样做:

    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))
Run Code Online (Sandbox Code Playgroud)

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

    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)
Run Code Online (Sandbox Code Playgroud)