简单的解决方案如何对OpenCV进行立体声校准和整流?

简单的解决方案如何对OpenCV进行立体声校准和整流?,第1张

简单的解决方案如何对OpenCV进行立体声校准和整流?

我找不到我做错了什么,导致答案不正确,但是我却找到了可以解决更多问题的解决方案!
我遇到了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()

以下是我在问题中张贴的同一张图片得到纠正的结果。

虽然用于计算视差图,但它需要调整其参数(程序包提供了一个工具),但可以完成工作:)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5508132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存