2015-05-12 3 views
2

Я хочу использовать некоторый собственный код/​​библиотеку C++ в приложении для Android. Часть C++ в значительной степени основана на openCV.openCV для Android - НЕ opencv-android-sdk

Я знаю о opencv-android-sdk и видел множество подробных руководств о том, как это сделать с Android Studio (например, this one), но все они просто используют opencv-android-sdk, который поддерживает только ограниченное подмножество функций openCV (я не говорю о тех, которые не имеют смысла на мобильном устройстве, например, связанных с gpu функциональных возможностях, но некоторые другие функции, которых просто нет в opencv-android-sdk, и мне они нужны для кода на C++).

В любом случае, мой вопрос:: могу ли я как-то скомпилировать и использовать «полный набор модулей» openCV в моем проекте Android Studio (используя NDK и т. Д.)?

Я видел также this one, и он утверждает, что «[он] будет строить большинство OpenCV модулей [для андроида]», но это мне не понятно, как использовать его ...

Любой намек будет высоко оценен!

+0

Вы можете узнать об открытии cv из некоторых книг, которые вы можете получить с http://www.filtrlink.com и поиска opencv в окне поиска –

ответ

-1

Вы должны исследовать JNI (интерфейс Java Java), который является средством обертывания библиотек C с Java.

Кроме того, вы можете рассмотреть возможность получения овладеть этой книги: Mastering OpenCV with Practical Computer Vision Projects

Что входит в это в некоторых деталях.

+1

Спасибо за ответ!У меня нет никаких проблем с интеграцией, компиляцией и запуском моего собственного кода C++ в приложение Android, если оно зависит исключительно от opencv-android-sdk; проблемы возникают, когда я хочу использовать opencv с некоторыми дополнительными модулями, а не с SDK. (книга, кстати, замечательная! Спасибо, но мне все равно не хватает того, что мне нужно) – Reza

+0

Это не отвечает на вопрос. – kunal18

0

OK! Думаю, я понял это! В основном нужно следовать this tutorial, но просто замените путь в Android.mk, чтобы указать на скомпилированную полную версию openCV, а не openCV-Android-SDK (а также некоторые другие небольшие изменения, для тех, которые я просто копирую здесь, что У меня есть в Android.mk и Application.mk).

В конце концов, мой Android.mk выглядит следующим образом (OPENCVROOT должны быть установлены правильно):

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
OPENCVROOT:= /path/to/opencv-2.4.10/platforms/build_android_arm 
OPENCV_CAMERA_MODULES:=on 
OPENCV_INSTALL_MODULES:=on 
OPENCV_LIB_TYPE:=SHARED 
include ${OPENCVROOT}/OpenCV.mk 
LOCAL_SRC_FILES := main.cpp 
LOCAL_LDLIBS += -llog 
LOCAL_MODULE := hello 
include $(BUILD_SHARED_LIBRARY) 

И Application.mk выглядит следующим образом:

APP_STL := gnustl_static 
APP_CPPFLAGS := -frtti -fexceptions 
APP_ABI := armeabi-v7a 
APP_PLATFORM := android-19 

Просто короткую записку по составлению OpenCV с Android NDK :

Для компиляции полного openCV с использованием NDK все еще можно использовать упомянутый метод here; описание основано на NDK-r8e, но при необходимости можно загрузить NDK-r10d и использовать его вместо этого. Мне пришлось отключить связанные cuda части в источнике openCV, чтобы успешно скомпилировать его с NDK (просто добавив -D WITH_CUDA=OFF в opencv-2.4.10/platforms/scripts/cmake_android_arm.sh, в последней строке, после cmake, выполняет задания!). Если вам нужны незакрепленные модули (например, SURF и SIFT, НЕ клонируйте их из github, просто загрузите их в один почтовый индекс от here, кстати, я использовал версию 2.4.10).

Теперь у меня есть доступ почти ко всем функциям openCV в родном коде C++, который я интегрирую в свое приложение для Android!

Я надеюсь, что это тоже поможет другим!

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