我从ximgproc_DisparityWLSFilter
获得cv2.ximgproc.createDisparityWLSFilter(left_matcher)
,
但我无法让ximgproc_DisparityWLSFilter.filter()
工作。
我得到的错误是
OpenCV错误:断言失败(!disparity_map_right.empty()&&(disparity_map_right.depth()== CV_16S)&&(disparity_map_right.channels()== 1))在cv :: ximgproc中: :DisparityWLSFilterImpl :: filter,file ...... \ opencv_contrib \ modules \ ximgproc \ src \ disparity_filters.cpp,第262行
一般情况下,当“ximgproc_DisparityWLSFilter”没有单一的google结果时,如何确定如何使用此功能?
答案 0 :(得分:1)
我也遇到了这个问题,您需要做的是首先创建过滤器。然后,您可以进行筛选...希望这是有道理的。这是我在Python 3.6 opencv3.4.2上测试过的代码片段
wls = cv2.ximgproc.createDisparityWLSFilter(left_Matcher)
filteredDisp = wls.filter(leftStereoComputeOutput, leftOriginalImage, disparity_map_right=rightStereoComputeOutput)
为了弄清楚这是如何工作的,我必须查看文档以及其他人在Github上实现的内容,然后进行连接。很多试验和错误。
过滤器的参数为:
Python:
filtered_disparity_map = cv.ximgproc_DisparityFilter.filter( disparity_map_left, left_view[, filtered_disparity_map[, disparity_map_right[, ROI[, right_view]]]] )
参数:
disparity_map_left 左视图的视差图,1通道,CV_16S类型。隐式假定视差值按16缩放(一个像素的视差对应于视差图中的16的值)。视差图可以具有任何分辨率,它将自动调整大小以适合left_view分辨率。
原始立体声对的left_view 左视图,用于指导8位单通道或三通道图像的滤波过程。
filtered_disparity_map 输出视差图。
disparity_map_right 可选参数,例如,某些实现可能还会使用右视图的视差图来计算置信度图。
要过滤的视差图的ROI 区域。可选,通常应自动设置。
right_view 可选参数,某些实现可能还会使用原始立体声对的右视图。
以上参数位于https://docs.opencv.org/3.4/db/d72/classcv_1_1ximgproc_1_1DisparityFilter.html
答案 1 :(得分:0)
与c ++不同,Python在指针方面效果不佳。参数是
Filtered_disp = ximgproc_DisparityWLSFilter.filter(left_disp,left,None,right_disp)
请注意,它不再是Python中的void函数!
我通过反复试验弄明白了。