python - 成功的 cv2.calibrateCamera 后如何获得良好的 cv2.stereoCalibrate

标签 python opencv computer-vision camera-calibration

大家好,我一直在使用 Python 和 OpenCV 深入研究计算机视觉,并尝试校准我购买的两台相机,以便进行一些 3D 立体重建,但我遇到了一些问题。

我主要关注的是这个tutorial为了分别校准相机(我将其应用于两个相机),然后我打算使用 cv2.stereoCalibrate 来获得相对校准。

通过单相机校准,一切似乎都正常工作,我得到了非常低的重新投影错误,并且据我所知,矩阵看起来不错。这里留下单相机标定的结果。

cameraMatrix1 和 distCoeffs1:

[[ 951.3607329     0.          298.74117671]
 [   0.          954.23088299  219.20548594]
 [   0.            0.            1.        ]]

[[ -1.07320015e-01  -5.56147908e-01  -1.13339913e-03   1.85969704e-03
    2.24131322e+00]]

cameraMatrix2 和 distCoeffs2:

[[ 963.41078117    0.          362.85971342]
 [   0.          965.66793023  175.63216871]
 [   0.            0.            1.        ]]

[[ -3.31491728e-01   2.26020466e+00   3.86190151e-03  -2.32988011e-03
   -9.82275646e+00]]

因此,在完成这些之后,我执行以下操作(我修复了内在函数,因为我已经从之前的校准中知道了它们):

stereocalibration_criteria = (cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS, 100, 1e-5)
stereocalibration_flags = cv2.CALIB_FIX_INTRINSIC
stereocalibration_retval, cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpoints,imgpoints_left,imgpoints_right,cameraMatrix1,distCoeffs1,cameraMatrix2,distCoeffs2,gray_left.shape[::-1],criteria = stereocalibration_criteria, flags = stereocalibration_flags)

我已经尝试了几次更改stereoCalibrate的标志并切换矩阵,看看我是否在顺序上弄错了,这很重要,但我仍然受阻,并得到了大约30的retval(并且在我试图纠正图像,当然结果是一场灾难)。

我还尝试使用互联网上的一些校准图像,并且确实得到了相同的结果,因此我认为问题不在于我拍摄的图像。如果有人能指出我正确的方向或知道可能是什么,那将非常非常受欢迎。

最佳答案

事实证明,我使用的图像顺序对于左右相机来说是不一样的......我正在使用

images_left = glob.glob('Calibration/images/set1/left*' + images_format)
images_right = glob.glob('Calibration/images/set1/right*' + images_format)

当我应该使用类似的东西时:

images_left = sorted(glob.glob('Calibration/images/set1/left*' + images_format))
images_right = sorted(glob.glob('Calibration/images/set1/right*' + images_format))

这是因为 glob 以明显随机的顺序获取图像,所以我试图匹配错误的图像。现在我终于得到了 0.4 retval,这还不错。

关于python - 成功的 cv2.calibrateCamera 后如何获得良好的 cv2.stereoCalibrate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50630769/

相关文章:

python - pyunit 的漂亮 html 报告

python - Python中的异步异常处理

python - 如何在 Python 中进行三次或更高多项式多元回归?

python - 用 non_atomic_requests 替换 django 装饰器 commit_manually

python - OpenCV 轮廓区域异常

image-processing - 您将如何找到给定图像的对象的高度?

C++可执行链接问题

c++ - ifstream 在读取文件 3 次后中断

python - Skimage regionprops 特征的(面积,euler_number)尺寸在 Python 中不正确

python - 自定义数据集的 ImageDataGenerator 的替代方案