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

4

我正在使用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错误:Bad argument(对于非平面标定装置,必须指定初始内部矩阵)在cvCalibrateCamera2中,文件D:\ Build \ OpenCV \ opencv-3.1.0 \ modules \ calib3d \ src \ calibration.cpp,第1440行 Traceback(最近的调用最先): File“C:/ Bdrive / AlgoSurg实习/ DLT / CamCalTrial2.py”,第109行, 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)) cv2.error:D:\ Build \ OpenCV \ opencv-3.1.0 \ modules \ calib3d \ src \ calibration.cpp:1440:错误:(-5)对于非平面标定装置,必须在函数cvCalibrateCamera2中指定初始内部矩阵

语法可能有误,或者我漏掉了什么?
1个回答

7

你必须这样做:

    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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接