官方的opencv android builds不包含opencv_contrib模块,而且自己构建它们也不是一件容易的事情。幸运的是,多亏了chaoyangnz,我们不必进行构建。
然而,对于这些构建,没有用于创建WLSDisparityFilter对象的JNI定义,因此,尽管底层的ximgproc库在那里,但您实际上不能为filtering stereo depth maps创建一个WLS。
如何在安卓系统上使用WLSDisparityFilter?
发布于 2018-11-03 11:45:10
值得庆幸的是,底层的库已经存在,因此您只需添加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模块也可以以大致相同的方式启用。
希望这能帮助其他人将粗大的、像素y的视差图变成漂亮的深度图!
https://stackoverflow.com/questions/53128231
复制相似问题