У меня есть 2 камеры, и я хочу вычислить расхождение между ними.
Перевод между этими камерами в основном происходит в направлении z (т. Е. "Внутри плоскости изображения") и немного в x и y.направление.Например: (0,2, 0,2, 0,8)
Когда я теперь вычисляю параметры выпрямления с помощью метода stereoRectify()
, выходные изображения просто черные.Использование других векторов перевода работает просто отлично, но результаты, конечно, неверны.
Почему это так и как я могу решить проблему?
Редактировать: Эти значения перевода приводят к исправлению обоихизображения черные.Другие (неправильные) векторы перевода работают просто отлично.Изменение значения альфа мало что меняет.
rotation_quat = Quaternion(0.999999913938509, 0.00029714546497339216, -0.00011465939948083866, 0.0002658585515330323)
rotation = rotation_quat.rotation_matrix.astype(np.float64)
translation = np.array([0.2,0.2,0.8]).astype(np.float64)
R1, R2, P1, P2, Q, roi1, roi2 = cv2.stereoRectify(intrinsicMatrix1, distCoeffs1, intrinsicMatrix2, distCoeffs2, img1.shape[::-1], rotation, translation, alpha=1)
map11, map12 = cv2.initUndistortRectifyMap(intrinsicMatrix1, distCoeffs1, R1, P1, img1.shape[::-1], cv2.CV_32FC1)
map21, map22 = cv2.initUndistortRectifyMap(intrinsicMatrix2, distCoeffs1, R2, P2, img2.shape[::-1], cv2.CV_32FC1)
# rectify
img1_rect = cv2.remap(img1, map11, map12, cv2.INTER_LANCZOS4)
img2_rect = cv2.remap(img2, map21, map22, cv2.INTER_LANCZOS4)
cv2.imshow("img1_rect", img1_rect)
cv2.waitKey(0)
cv2.imshow("img2_rect", img2_rect)
cv2.waitKey(0)