2015-05-03 2 views
6

Есть ли способ использовать opencv contrib modules в android? Я специально использую текстовый модуль. Есть ли Android для этих модулей. У меня есть мой код, работающий на рабочем столе, и я пытаюсь перенести мои коды на Android. Любое понимание было бы gr8.Использование модулей OpenCv contrib для android

+2

Вам нужно будет скомпилировать свой собственный OpenKV Android SDK с '/platform/android/build_sdk.py'. –

ответ

2

У меня возникли проблемы с решением этих проблем. Я думал, что найду соответствующий вопрос и отвечу в сообщество, если другие также ищут решения проблемы, подобные этой и моей. Компиляция была сделана на Macbook Retina 13" .

Предоставленных инструкции несколько неполный, и есть дополнительные шаги, которые будут необходимы, чтобы добраться до конечного продукта.

В начале вы будете следовать стандартной процедуре, изложенные онлайн

$ cd <opecv_directory> 
$ mkdir build 
$ cd <opencv_build_directory> 
$ cmake -D OPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory> 
$ make -j5 
$ make install 

в дополнение к этому, вы можете столкнуться с ошибкой или два. Мне нужно установить некоторые недостающие компоненты для того, чтобы получить последние вещи, которые пропали без вести, но это может отличаться для вас (я исследовал ошибки и понял, что мне нужны дополнительные компоненты)

brew install ninja 
brew install oxygen 
brew install ant 

Я также столкнулся с ошибкой с один модуль с просьбой о необходимости следующих объявлены в исходном коде (или флаги компилятора):

#define SOLARIS_64BIT_ENABLED 

Другая вещь, которую вы можете сделать, это удалить другие модули папке Contrib, которую вы, возможно, не интересуете во время компиляции. Просто включите модули, которые вы хотите, и, надеюсь, те, которые хороши. Я сделал это просто, удалив один или два из папки/modules, а затем повторно запустил скрипт python.

Для запуска сборки необходим финальный сценарий python. Я создал каталог рядом с основным исходным деревом и папкой contrib.

OpenCVSource 
    -> opencv 
    -> opencv_contrib 
    -> android_opencv_build 

Вызов ниже был сделан из каталога, в котором я хочу сборки, происходят из, так что я изменил в каталог вызов был следующий:

python ../opencv/platforms/android/build_sdk.py --extra_modules_path ../opencv_contrib/modules --ndk_path <your-path-to-ndk-top-level-folder> --sdk_path <your-path-to-sdk-top-level-folder> ./ ../opencv 

Это только строит. поэтому файлы, необходимые для использования библиотеки, но не строят .jar-файл, который вам понадобится для использования новых двоичных файлов. Чтобы сделать это, перейдите к своей папке сборки (мой, как видно, в android_opencv_build/OpenCV-android-sdk)

Загрузите этот проект в Eclipse стандартным образом с помощью импорта существующего проекта Android в рабочее пространство. Вам действительно нужен только проект/sdk, но, если хотите, вы также можете загрузить образцы. Затем создайте проект. Возможно, вам потребуется изменить целевую сборку для поддержки новых API-интерфейсов камеры для успешной сборки; в моем случае изменение цели на уровень API 21.

Затем вы найдете файл .jar в каталоге/bin проекта. Файлы .jar и .so, найденные в файле android_opencv_build/OpenCV-android-sdk/sdk/native/jni /, содержат необходимые .so-файлы, которые вам необходимо включить в папку project/lib вместе с этой банкой.

Теперь у вас должно быть все, что вам нужно. Поскольку мы работаем с модулями Contrib (или нет, если вы строите его по другим причинам), возможно, что вы столкнетесь с другими ошибками в процессе сборки, которые не являются достаточно стабильными и потребуют некоторого внимания.Это не может помочь, но люди могут свободно добавлять комментарии к решениям других людей и эту должность, чтобы помочь им решить их, если они нашли решение.

+0

Следует отметить, что не все модули Contrib фактически создают Java-копию. Например, при работе с модулями Aruco для них нет классов java. Вам нужно будет создать jni-обертки в исходный код и использовать вызовы библиотеки C++. .jar и .so просто разрешить доступ к ним из вашего проекта Android. –

0

Я столкнулся с той же проблемой, после некоторой работы вокруг натолкнулась на красивую самообучаемую статью, чтобы построить opencv с дополнительными модулями. Ссылка на то же here

И в случае, если кто-то хочет использовать уже встроенный мастер OpenCV с вно дополнительных модулей, они могут чувствовать себя свободно использовать его с моей репо, ссылка на то же this, Эта статья работает только на окнах, просто для информации, поскольку я не смог следить за тем же на Mac.

Смежные вопросы