什么是ximgproc_DisparityWLSFilter.filter()参数?

时间:2017-05-31 06:10:49

标签: python opencv disparity-mapping

我从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结果时,如何确定如何使用此功能?

2 个答案:

答案 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函数!

我通过反复试验弄明白了。