如何在cv2.calibrateCam成功后获得一个好的cv2.stereoCalibrate

2024-06-28 11:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好,我一直在用Python和OpenCV对计算机视觉进行了深入的研究,并试图校准我买的两台摄像机,以便进行一些三维立体重建,但我有一些问题。在

{我打算分别校准这两个摄像机。在

随着单摄像机的校准,一切似乎都在正常工作,我得到了一个非常低的预测误差,据我所知,矩阵似乎看起来不错。这里我留下单摄像机校准的结果。在

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:

^{pr2}$

因此,在完成这些操作之后,我执行以下操作(我修复了从以前的校准中了解到的内部函数):

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)

我试过几次改变立体校准的标志,切换矩阵,看看我是不是在顺序上搞错了,这很重要,但我还是被这个问题挡住了,得到了大约30次的回复(之后我试图纠正图像,结果当然是一场灾难)。在

我也尝试过使用一些来自互联网的校准图像,我确实得到了相同的结果,所以我假设问题不在于我拍摄的图像。如果有人能给我指出正确的方向,或者知道会是什么,那将是非常欢迎的。在


Tags: 图像矩阵cv2摄像机flags校准termcriteria
1条回答
网友
1楼 · 发布于 2024-06-28 11:33:26

结果是我用的图像顺序对左右相机是不一样的。。。我在用

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

当我应该使用更像:

^{pr2}$

这是因为glob得到的图像显然是随机的,所以我试图匹配错误的图像。现在我终于得到了0.4的回归,这还不算太糟。在

相关问题 更多 >