如何在 Android 上使用 OpenCV 中的 WLSDisparityFilter 和 ximgproc?

问题描述 投票:0回答:1

官方的 opencv android 版本不包含 opencv_contrib 模块,自己构建它们并不简单。 幸运的是,感谢 chaoyangnz,我们不必建造大楼。

但是,在这些构建中,没有用于创建 WLSDisparityFilter 对象的 JNI 定义,因此,尽管存在底层 ximgproc 库,但您实际上无法创建用于过滤立体深度图的 WLS 过滤器。

如何在 Android 上使用 WLSDisparityFilter?

android opencv stereo-3d
1个回答
1
投票

幸运的是,底层库已经存在,因此您只需添加 java 接口即可使用它们。

打开:

/src/main/java/org/opencv/ximgproc/DisparityWLSFilter.java
文件。

添加以下方法:

    public DisparityWLSFilter createDisparityWLSFilter(StereoMatcher matcher_left) {
        DisparityWLSFilter filter = createDisparityWLSFilter_0(matcher_left);

        return filter;
    }

就是这样! 现在您可以创建并使用 WLSDisparity 过滤器。 请注意,您必须使用完整版本的

filter
函数。 Kotlin 中是这样的:

val disparityWLSFilter = createDisparityWLSFilter(stereoSGBM)
disparityWLSFilter.lambda = PrefHelper.getLambda()
disparityWLSFilter.sigmaColor = PrefHelper.getSigma()
disparityWLSFilter.filter(disparityMatLeft, leftMat, 
    disparityMatFiltered, disparityMatRight, Rect(0, 0, 
    disparityMatLeft.cols(), disparityMatLeft.rows()), rightMat)

我只使用 opencv_contrib 中的这个模块,尽管我想象其他缺失的 ximgproc 函数和其他 contrib 模块可以以大致相同的方式启用。

希望这可以帮助其他人将厚实的像素视差图变成漂亮的深度图!

© www.soinside.com 2019 - 2024. All rights reserved.