#python #opencv #stereo-3d #3d-reconstruction
#python #opencv #стерео-3d #3d-реконструкция
Вопрос:
КОНТЕКСТ
Я играю со стереовидением в соответствии с документами OpenCV. Я выполнил все до stereoRectify()
. Я нашел информацию о том, что следующим шагом является получение карт, initUndistortRectifyMap()
а затем их переназначение с изображениями, над которыми я буду работать.
ПРОБЛЕМА
Я не знаю, почему initUndistortRectifyMap()
возвращает мне map1, размер которого равен (y, x, 2), где x и y — размеры img, (x = 360, y = 640) в моем случае. map2 равен (y, x), и это выглядит нормально.
код
retL, mtxL, distL, rvecsL, tvecsL = cv2.calibrateCamera(objpoints, imgpointsL, grayL.shape[::-1], None, None)
retR, mtxR, distR, rvecsR, tvecsR = cv2.calibrateCamera(objpoints, imgpointsR, grayR.shape[::-1], None, None)
retval, camMat1, dCoeffs1, camMat2, dCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpoints, imgpointsL, imgpointsR,
mtxL, distL, mtxR, distR,
grayL.shape[::-1], flags=cv2.CALIB_FIX_INTRINSIC)
R1, R2, P1, P2, Q, roi1, roi2 = cv2.stereoRectify(camMat1, dCoeffs1, camMat2, dCoeffs2, grayL.shape[::-1], R, T)
map1, map2 = cv2.initUndistortRectifyMap(camMat1, dCoeffs1, R, P1, (360, 640), cv2.CV_16SC2)