OpenCV в Android Studio
Я хочу использовать библиотеку OpenCV в моем приложении с Android Studio. Я следовал инструкциям, найденным здесь, но я получаю ошибку
конфигурация с именем 'default' не найдена
Что может быть не так?
Я использую Android Studio 1.0 с gradle 2.2.1.
6 ответов:
следующие шаги для использования Android OpenCV sdk в Android Studio. Это упрощенная версия этого(1) так ответьте.
- скачать последний OpenCV sdk для Android от OpenCV.org и распакуйте zip-файл.
- импорт OpenCV в Android Studio С File - > New - > Import Module выберите sdk / java папка в распакованном архиве opencv.
- обновление.gradle в разделе импортированный модуль OpenCV для обновления 4 полей в соответствии с вашим проектом сборки.gradle a) compileSdkVersion b) buildToolsVersion c) minSdkVersion и d) targetSdkVersion.
- добавить зависимость модуля by Приложение -> Настройки Модуля и выберите зависимости tab. Нажмите + значок внизу, выберите Зависимость Модуля и выберите импортированную Модуль OpenCV.
- для Android студия версии v1.2.2, чтобы доступ к настройкам модуля : в представлении проекта щелкните правой кнопкой мыши зависимый модуль - > Открыть Настройки Модуля
- скопировать библиотеки под sdk / native в Android Studio под app / src / main.
- В Android Studio,переименуйте скопированный библиотеки для jniLibs и мы сделали.
Шаг (6), так как Android studio ожидает родной libs в
app/src/main/jniLibsвместо старыхlibsпапка. Для тех, кто новичок в Android OpenCV, не пропустите следующие шаги
- включить
static{ System.loadLibrary("opencv_java"); }(Примечание: для OpenCV версии 3 на этом шаге вы должны вместо этого загрузить библиотекуopencv_java3.)- для шага (5), Если вы игнорируете любые платформенные библиотеки, такие как x86, убедитесь, что ваше устройство / эмулятор не находится на этом платформа.
OpenCV написано на C / C++. Фантики Java являются
- Android OpenCV SDK - OpenCV.org поддерживается Android Java wrapper. Я предлагаю вот это.
- OpenCV Java - OpenCV.org поддерживается автоматически сгенерированная настольная Java-оболочка.
- JavaCV - популярная оболочка Java, поддерживаемая независимыми разработчиками. Не Android специфический. Эта библиотека может выйти из синхронизации с новыми версиями OpenCV.
интеграция OpenCV v3.1.0 в Android Studio v1.4. 1, инструкции с дополнительной детализацией и это-то, что вы должны получить скриншоты типа.
большая часть кредита идет на Киран, Кул, 1", и SteveLiles на opencv.org за их объяснения. Я добавляю этот ответ, потому что считаю, что интерфейс Android Studio теперь достаточно стабилен, чтобы работать с этим типом интеграции. Также я должен написать эти инструкции в любом случае для нашего проект.
опытные разработчики A. S. найдут некоторые из этих педантичных. Этот ответ предназначен для людей с ограниченным опытом работы в Android Studio.
создайте новый проект Android Studio с помощью мастера проектов (меню: / File / New Project):
- назвать ее " cvtest1"
- формат: API 19, Android 4.4 (KitKat)
Пустой Активности по имени MainActivity
вы должны иметь cvtest1 каталог, в котором хранится этот проект. (строка заголовка Android studio показывает, где находится cvtest1, когда вы открываете проект)
убедитесь, что ваше приложение работает правильно. Попробуйте изменить что-то вроде текста "Hello World", чтобы подтвердить, что цикл сборки/тестирования подходит для вас. (Я тестирую с эмулятором API 19 устройство.)
загрузите пакет OpenCV для Android v3.1.0 и распакуйте его в каком-нибудь временном каталоге. (Убедитесь, что это пакет специально для Android, а не только пакет OpenCV для Java.) Я буду называть этот каталог" unzip-dir" ниже unzip-dir вы должны иметь sdk / native / libs каталог с подкаталогами, которые начинаются с таких вещей, как arm...,mips... и x86... (один для каждого типа "архитектуры" Android работает на)
из Android Studio импортируйте OpenCV в свой проект как модуль: Меню: / File / New / Import_Module:
- источник-каталог: {unzip-dir} / sdk / java
- имя модуля: Android studio автоматически заполняет это поле с openCVLibrary310 (точное имя, вероятно, не имеет значения, но мы пойдем с этот.)
нажать на кнопку далее. Вы получаете экран с тремя флажками и вопросами о банках, библиотеках и параметрах импорта. Все три должны быть проверены. Нажмите на готово.
Android Studio начинает импортировать модуль, и вы увидите импорт-резюме.txt файл, который имеет список того, что не было импортировано (в основном файлы javadoc) и другие части информации.
но вы также получаете сообщение об ошибке говоря не удалось найти цель с хэш-строкой "android-14".... Это происходит из-за сборки.файл gradle в zip-файле OpenCV, который вы загрузили, говорит о компиляции с использованием Android API версии 14, который по умолчанию у вас нет с Android Studio v1.4.1.
откройте диалог структура проекта (Меню: / File / Project_Structure). Выберите модуль "приложение", нажмите на кнопку зависимости tab и добавить : openCVLibrary310 как зависимость модуля. При выборе Добавить/Module_Dependency он должен появиться в списке модулей, которые можно добавить. Теперь он будет отображаться как зависимость, но вы получите еще несколько не могу найти-android-14 ошибки в журнале событий.
посмотреть в каталоге построить.gradle файл для вашего модуля приложения. Есть несколько сборки.Gradle в файлы в проект Android. Тот, который вы хотите в cvtest1 / app и с точки зрения проекта это выглядит так:построить.gradle (модуль: приложение). Обратите внимание на значения этих четырех полей:
- compileSDKVersion (мой говорит 23)
- buildToolsVersion (мой говорит 23.0.2)
- minSdkVersion (мой говорит 19)
- targetSdkVersion (мой говорит 23)
ваш проект теперь имеет cvtest1 / OpenCVLibrary310 каталог, но он не виден из представления проекта:
используйте другой инструмент, например любой файловый менеджер, и перейдите в этот каталог. Вы также можете переключить представление проекта из Android до Файлы Проекта и вы можете найти эту папку, как показано на этом скриншоте:
внутри есть еще один построить.gradle файл (он выделен на скриншоте выше). Обновите этот файл с четырьмя значениями из шага 6.
Resynch ваш проект, а затем очистить/перестроить его. (Меню: / Build / Clean_Project) следует очистить и построить без ошибок и вы должны увидеть много ссылок на : openCVLibrary310 на 0:сообщения экран.
в этом точка модуль должен отображаться в иерархии проекта как openCVLibrary310, как app. (Обратите внимание, что в этом маленьком выпадающем меню я возвращался из Посмотреть Проект до Android View). Вы также должны увидеть дополнительный построить.gradle файл в разделе "Gradle Scripts", но я нахожу интерфейс Android Studio немного глючным, и иногда он не делает этого сразу. Так что попробуйте ресинхронизация, уборка, даже перезапуск Android Studio.
вы должны увидеть модуль openCVLibrary310 со всеми функциями OpenCV под java, как на этом скриншоте:
скопировать {unzip-dir} / sdk / native / libs каталог (и все под ним) для вашего Android проекта, чтобы cvtest1 / OpenCVLibrary310 / src / main/, а затем переименуйте от библиотеки до jniLibs. Вы теперь должен иметь cvtest1 / OpenCVLibrary310/src/main / jniLibs. Повторной синхронизации вашего проекта и этот каталог должен появится в представлении проекта в разделе openCVLibrary310.
перейти к методу onCreate MainActivity.java и добавить этот код:
if (!OpenCVLoader.initDebug()) { Log.e(this.getClass().getSimpleName(), " OpenCVLoader.initDebug(), not working."); } else { Log.d(this.getClass().getSimpleName(), " OpenCVLoader.initDebug(), working."); }затем запустите приложение. Вы должны увидеть такие строки в Android Монитор:
(Я не знаю, почему эта строка с сообщением об ошибке есть)
теперь попробуйте на самом деле использовать некоторый код openCV. В приведенном ниже примере я скопировал a .jpg файл в каталог кэша приложения cvtest1 на эмуляторе android. Приведенный ниже код загружает это изображение, запускает алгоритм обнаружения canny edge и затем записывает результаты обратно в a .png-файл в том же каталоге.
ставим этот код чуть ниже код предыдущий шаг и изменить его, чтобы соответствовать вашим собственным файлам/каталогам.
String inputFileName="simm_01"; String inputExtension = "jpg"; String inputDir = getCacheDir().getAbsolutePath(); // use the cache directory for i/o String outputDir = getCacheDir().getAbsolutePath(); String outputExtension = "png"; String inputFilePath = inputDir + File.separator + inputFileName + "." + inputExtension; Log.d (this.getClass().getSimpleName(), "loading " + inputFilePath + "..."); Mat image = Imgcodecs.imread(inputFilePath); Log.d (this.getClass().getSimpleName(), "width of " + inputFileName + ": " + image.width()); // if width is 0 then it did not read your image. // for the canny edge detection algorithm, play with these to see different results int threshold1 = 70; int threshold2 = 100; Mat im_canny = new Mat(); // you have to initialize output image before giving it to the Canny method Imgproc.Canny(image, im_canny, threshold1, threshold2); String cannyFilename = outputDir + File.separator + inputFileName + "_canny-" + threshold1 + "-" + threshold2 + "." + outputExtension; Log.d (this.getClass().getSimpleName(), "Writing " + cannyFilename); Imgcodecs.imwrite(cannyFilename, im_canny);выполнить приложение. Ваш эмулятор должен создать черно-белое изображение "края". Вы можете использовать монитор устройства Android чтобы получить вывод или написать действие, чтобы показать его.
The Gotchas:
- если вы опустите свою целевую платформу ниже KitKat, некоторые из библиотек OpenCV больше не будут работать, в частности, классы, связанные с org.в формате OpenCV.андроид.Camera2Renderer и другие классы. Вы, наверное, можете обойти это путем простого удаления apprpriate в формате OpenCV .Java-файл.
- если вы поднимаете свою целевую платформу до Lollipop или выше моего примера загрузки файла, возможно, не сработает, потому что использование абсолютных путей к файлам не одобряется. Поэтому вам, возможно, придется изменить пример, чтобы загрузить файл из галереи или где-то еще. Есть множество примеров плавает вокруг.
для всех, кто чувствовал, что они хотят убежать со всеми шагами и снимками экрана на (отлично!) выше ответы, это сработало для меня с
android studio 2.2.1:
- создайте новый проект, назовите его так, как вы хотите, и возьмите значение по умолчанию (minSdkVersion 15 в порядке).
- загрузите zip-файл отсюда:https://sourceforge.net/projects/opencvlibrary/files/opencv-android/ (я скачал версию 3.1.0, но может быть и более новая версии.)
- распакуйте zip-файл, лучшее место находится в папке рабочего пространства, но это не имеет особого значения.
- внутри
Android Studio, нажмите кнопкуFile->New-> Import Moduleи выберите\path_to_your_unzipped_file\OpenCV-android-sdk\sdk\javaи нажмите кнопку ОК, а затем принять все диалоговые окна по умолчанию.на вашего
appмодуль, добавьте это в блок зависимостей:dependencies { compile project(':openCVLibraryXYZ') //rest of code }где XYZ-это точная версия, которую вы загружаете, например, в моем случае:
dependencies { compile project(':openCVLibrary320') //rest of code }
интеграция Opencv с android studio
те, кто хочет иметь Видео youtube для того же, попробуйте с последней версией opencv, хотя (3.4.0), моя удача была недостаточно хороша для показанной версии(2.4.9) (в формате OpenCV-релизы).
вы также можете добавить эту библиотеку в сборку.gradle
dependencies{ compile 'org.opencv:opencv-android:2.4.8' }








Comments