import numpy as np
import cv2
imgL = cv2.imread("C:/Users/admin/jupyter/car/challenge_pictrue/right/right2.jpg ",0)
imgR = cv2.imread("C:/Users/admin/jupyter/car/challenge_pictrue/left/left2.jpg ",0)
cv2.imshow('imgL', imgL)
cv2.imshow('imgR', imgR)
stereo = cv2.StereoBM_create(numDisparities=16, blockSize=17)
disparity = stereo.compute(imgL, imgR)
disparity = cv2.normalize(disparity, disparity, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX,
dtype=cv2.CV_8U)
cv2.imshow('disparity', disparity)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
“我应该调整什么参数才能得到正确的结果?”
方法错误。BM 仅适用于动态测量范围较低的简单室内使用。对于室内图像,您只需要调整 Mindisp 和 Disp 数量以及窗口大小。
\n对于室外来说,情况更为复杂。也许你才刚刚开始。BM 和其他基于全局的方法结果较差。要么因过度拟合而毁容,要么因局部相似性误差而产生条纹效应。
\n传统 CV 的当前技术水平是 HH 提出的基于 SGM 的方法。对于基于深度学习的方法,没有最好的情况,因情况/数据集而异。lecun \xc5\xbdbontar 的作品“Stereo Matching by Training a Convolutional Neural Network”是我经常用来进行比较的。
\n\n尽量不要使用太便宜/低复杂度的算法来执行高级任务。而且如果你用它来控制实际的驾驶动作(因为我看到你其他的Vdispary问题),你会被杀的。我已经在不同的地方对此进行了测试。这不是正确的方法。配备激光雷达或其他主动测距装置以提高安全性
\n这是我使用 SGM 进行的人口普查得出的结果。您可以参考此链接\n https://docs.opencv.org/trunk/d3/d14/tutorial_ximgproc_disparity_filtering.html进行复制。
\n\n白点表示靠近的物体。通过Vdispaity,当没有物体时,它会说附近有物体。这样就会导致汽车突然停下来。你可以参考我在南洋理工大学的论文,了解如何删除它们。并记住正确引用它们
\n\n问候
\n袁胜海博士
\n