【问题标题】:Error when using two flags OpenCv's calibrateCamera function使用两个标志 OpenCv 的 calibrateCamera 函数时出错
【发布时间】:2016-12-13 09:22:44
【问题描述】:

我正在使用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 行 回溯(最近一次通话最后): 文件“C:/Bdrive/AlgoSurg intern/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: error: (-5) 对于非平面校准装置,必须在函数中指定初始内在矩阵cvCalibrateCamera2

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

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    你必须这样做:

        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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 2020-10-16
      • 1970-01-01
      相关资源
      最近更新 更多