我找不到我做错了什么,导致答案不正确,但是我却找到了可以解决更多问题的解决方案!
我遇到了StereoVision库,并考虑到它的文档水平很低,因此我设法获取/编写了以下可校准和纠正OK的快照。
import cv2import os.pathimport numpy as npfrom stereovision.calibration import StereoCalibrator, StereoCalibrationfrom stereovision.blockmatchers import StereoBM, StereoSGBMcalib_dir = 'data/config/calibration'if(not os.path.exists(calib_dir)): calibrator = StereoCalibrator(9, 6, 2, (480, 640)) for idx in range(1, 14): calibrator.add_corners((cv2.imread('images/left%02d.jpg' %idx), cv2.imread('images/right%02d.jpg' %idx))) calibration = calibrator.calibrate_cameras() print "Calibation error:", calibrator.check_calibration(calibration) calibration.export(calib_dir)calibration = StereoCalibration(input_folder=calib_dir)if True: block_matcher = StereoBM()else: block_matcher = StereoSGBM()for idx in range(1, 14): image_pair = (cv2.imread('images/left%02d.jpg' %idx), cv2.imread('images/right%02d.jpg' %idx)) rectified_pair = calibration.rectify(image_pair) disparity = block_matcher.get_disparity(rectified_pair) norm_coeff = 255 / disparity.max() cv2.imshow('Disparity %02d' %idx, disparity * norm_coeff / 255) for line in range(0, int(rectified_pair[0].shape[0] / 20)): rectified_pair[0][line * 20, :] = (0, 0, 255) rectified_pair[1][line * 20, :] = (0, 0, 255) cv2.imshow('Rect %02d' %idx, np.hstack(rectified_pair)) cv2.waitKey()
以下是我在问题中张贴的同一张图片得到纠正的结果。
虽然用于计算视差图,但它需要调整其参数(程序包提供了一个工具),但可以完成工作:)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)