我有一对水平对齐的立体相机,使用图像的全尺寸进行了校准。
我通过调用cv2.initUndistortRectifyMap来获取每个相机的映射,然后使用cv2.remap进行矫正。
使用全尺寸图像时,效果如下:
我通过调用cv2.initUndistortRectifyMap来获取每个相机的映射,然后使用cv2.remap进行矫正。
使用全尺寸图像时,效果如下:
map1, map2 = cv2.initUndistortRectifyMap(camera_matrix_1, dist_coeffs_1, R1, P1, (w, h), cv2.CV_16SC2)
map3, map4 = cv2.initUndistortRectifyMap(camera_matrix_2, dist_coeffs_2, R2, P2, (w, h), cv2.CV_16SC2)
rectified1 = cv2.remap(img1, map1, map2, cv2.INTER_LINEAR)
rectified2 = cv2.remap(img2, map3, map4, cv2.INTER_LINEAR)
cv2.initUndistortRectifyMap
函数的参数需要使用cv2.stereoCalibrate
和cv2.stereoRectify
的输出。
为了提高处理速度,图像在进行矫正之前将被裁剪(并可能被缩小),这意味着矫正过程无法使用完整的图像。
为使代码能够与裁剪(和缩小)图像后进行矫正,请作出哪些更改?