К счастью, базовые библиотеки присутствуют, поэтому вы можете использовать их, просто добавив 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
. Примерно так в Котлине:
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 могут быть включены почти таким же образом.
Надеюсь, это поможет кому-то еще превратить короткие, пиксельные карты диспаратности в красивые карты глубины!