Как использовать WLSDisparityFilter и ximgproc из OpenCV на Android? - PullRequest
0 голосов
/ 03 ноября 2018

Официальные opencv android сборки не содержат opencv_contrib модулей, и сборка их самостоятельно не тривиальна. К счастью, нам не нужно строить здание благодаря chaoyangnz .

Однако в этих сборках нет определений JNI для создания WLSDisparityFilter объектов, поэтому, несмотря на наличие базовых библиотек ximgproc, вы не можете создать фильтр WLS для фильтрации стереофонических карт глубины. .

Как вы можете использовать WLSDisparityFilter на Android?

1 Ответ

0 голосов
/ 03 ноября 2018

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

Надеюсь, это поможет кому-то еще превратить короткие, пиксельные карты диспаратности в красивые карты глубины!

...