OpenCV 的相机校准似乎是错误的

Camera calibration for OpenCV seems to be wrong

请帮助我理解这种行为。

使用此代码校准相机时:

Calib3d.calibrateCamera(objectPoints, imagePoints, savedImageSize, intrinsic, distCoeffs, rvecs, tvecs,
                Calib3d.CALIB_FIX_PRINCIPAL_POINT +
                Calib3d.CALIB_ZERO_TANGENT_DIST +
                Calib3d.CALIB_FIX_ASPECT_RATIO +
                Calib3d.CALIB_FIX_K4 +
                Calib3d.CALIB_FIX_K5
                ,term);

使用 45 张图像,如下所示: 我收到这个: 这显然是不正确的。

结果值:

  [26384.00145168781, 0, 1631.5;       0, 26384.00145168781, 917.5;        0, 0, 1]
  [-33.54856921170454, -0.2057610950119468, 0, 0, 0]

如何设置校准以检索正确的数据?

我发现纯 C++ opencv 项目使用相同的属性和代码给出了正确的结果。 此代码有效: https://github.com/opencv/opencv/blob/master/samples/cpp/calibration.cpp

小心使用 java opencv 库!