Intereting Posts
«Предпочитаете вместо этого использовать процессор кинжала над этим классом» в Котлине Ошибка подключения ADB: невозможно создать мост отладки: невозможно запустить сервер adb: невозможно обнаружить версию adb, выход adb Определить угол зрения камеры смартфона Исправлены проблемы с отображением приложений для Android на симуляторе Blackberry Playbook Ошибка Android «gps требует ACCESS_FINE_LOCATION», хотя мой файл манифеста содержит это Как добавить дополнение к растровому изображению и цвет в списке слоев Курсор Edittext сбрасывается налево после обновления привязки данных Android Android, когда он включен в onLocationChanged Как получить результат камеры как uri в папке с данными? Как остановить и запустить ProgressBar Иерархия для моего устройства не работает Как рекомендуется использовать Google Map v2 внутри фрагмента? Отобразить сообщение «Нет товара» в ListView Привязка данных Android к пользовательскому адаптеру Textview: использование стиля заголовка диалога: @android: style / TextAppearance.DialogWindowTitle

OpenCV в Android Studio

Я хочу использовать библиотеку OpenCV в своем приложении с Android Studio. Я следил за инструкциями, найденными здесь, но я получаю ошибку

Конфигурация с именем «default» не найдена

Что может быть неправильным?

Я использую Android Studio 1.0 с градиентом 2.2.1.

Solutions Collecting From Web of "OpenCV в Android Studio"

Ниже приведены шаги для использования Android OpenCV sdk в Android Studio. Это упрощенный вариант этого ( 1 ) ответа SO.

  1. Загрузите последнюю версию OpenCV sdk для Android с OpenCV.org и распакуйте zip-файл.
  2. Импортируйте OpenCV в Android Studio , From File -> New -> Import Module , выберите папку sdk / java в распакованном архиве opencv.
  3. Обновите build.gradle под импортированным модулем OpenCV, чтобы обновить 4 поля, чтобы они соответствовали вашему проекту build.gradle a) compileSdkVersion b) buildToolsVersion c) minSdkVersion и d) targetSdkVersion.
  4. Добавьте зависимость модуля от приложения -> Настройки модуля и выберите вкладку « Зависимости ». Нажмите « внизу, выберите « Dependency Module» и выберите импортированный модуль OpenCV.
    • Для Android Studio v1.2.2 для доступа к настройкам модуля: в представлении проекта щелкните правой кнопкой мыши зависимый модуль -> Открыть настройки модуля
  5. Скопируйте папку libs под sdk / native в Android Studio под приложением / src / main .
  6. В Android Studio переименуйте скопированный каталог libs в jniLibs, и мы закончили.

Шаг (6) заключается в том, что Android-студия ожидает родные библиотеки в app/src/main/jniLibs вместо старой папки libs . Для тех, кто новичок в Android OpenCV, не пропустите ниже шагов

  • Включить static{ System.loadLibrary("opencv_java"); } static{ System.loadLibrary("opencv_java"); } (Примечание: для OpenCV версии 3 на этом этапе вы должны вместо этого загрузить библиотеку opencv_java3 .)
  • Для шага (5), если вы игнорируете любые платформы, такие как x86, убедитесь, что ваше устройство / эмулятор не находится на этой платформе.

OpenCV написан на C / C ++. Оболочки Java

  1. Android OpenCV SDK – OpenCV.org поддерживает оболочку Java Java. Я предлагаю это.
  2. OpenCV Java – OpenCV.org поддерживается автоматически созданная настольная Java-оболочка.
  3. JavaCV – популярная оболочка Java, поддерживаемая независимыми разработчиками. Не для Android. Эта библиотека может выйти из синхронизации с новыми версиями OpenCV.

Интеграция OpenCV v3.1.0 в Android Studio v1.4.1 , инструкции с дополнительными деталями и скриншоты типа «что-вы-должны-получить».

Большая часть кредитов принадлежит Kiran, Kool, 1 »и SteveLiles на opencv.org за их объяснения. Я добавляю этот ответ, потому что я считаю, что интерфейс Android Studio теперь достаточно стабилен, чтобы работать с этим типом интеграции Также я должен написать эти инструкции в любом случае для нашего проекта.

Опытные разработчики AS найдут некоторые из этих педантичных. Этот ответ ориентирован на людей с ограниченным опытом работы в Android Studio.

  1. Создайте новый проект Android Studio с помощью мастера проекта (Меню: / Файл / Новый проект):

    • Назовите его « cvtest1 »
    • Форм-фактор: API 19, Android 4.4 (KitKat)
    • Пустое действие под названием MainActivity

      У вас должен быть каталог cvtest1, в котором хранится этот проект. (Строка заголовка студии Android показывает, где cvtest1 при открытии проекта)

  2. Убедитесь, что ваше приложение работает правильно. Попробуйте изменить что-то вроде текста «Hello World», чтобы подтвердить, что цикл сборки / тестирования подходит для вас. (Я тестирую эмулятор устройства API 19).

  3. Загрузите пакет OpenCV для Android v3.1.0 и разархивируйте его в каком-нибудь временном каталоге. (Убедитесь, что это пакет специально для Android, а не только для пакета OpenCV для Java.) Я назову этот каталог « unzip-dir ». Ниже unzip-dir вы должны иметь каталог sdk / native / libs с подкаталогами, которые начинаются с Такие вещи, как рука …, mips … и x86 … (по одному для каждого типа «архитектуры» Android работает)

  4. Из Android Studio импортируйте OpenCV в свой проект как модуль: Menu: / File / New / Import_Module :

    • Исходный каталог: {unzip-dir} / sdk / java
    • Имя модуля: Студия Android автоматически заполняет это поле с помощью openCVLibrary310 (точное имя, вероятно, не имеет значения, но мы пойдем с этим).
    • Нажмите дальше . Вы получаете экран с тремя флажками и вопросами о банках, библиотеках и параметрах импорта. Все три должны быть проверены. Нажмите « Готово».

      Android Studio начинает импортировать модуль, и вам будет показан файл import-summary.txt, в котором есть список того, что не было импортировано (в основном файлы javadoc) и другие фрагменты информации. Введите описание изображения здесь

      Но вы также получаете сообщение об ошибке, в котором не удалось найти цель с хеш-строкой «андроид-14» …. Это происходит из-за того, что файл build.gradle в загруженном zip-файле OpenCV говорит, что он компилируется с использованием API Android версии 14, который по умолчанию у вас нет в Android Studio v1.4.1. Введите описание изображения здесь

  5. Откройте диалог структуры проекта ( меню: / File / Project_Structure ). Выберите модуль «приложение», перейдите на вкладку « Зависимости » и добавьте : openCVLibrary310 в качестве зависимости от модуля. Когда вы выбираете Add / Module_Dependency, он должен появиться в списке модулей, которые вы можете добавить. Теперь он будет отображаться как зависимость, но вы получите еще несколько ошибок can not-find-android-14 в журнале событий.

  6. Просмотрите файл build.gradle для вашего модуля приложения. В проекте Android есть несколько файлов build.gradle. Тот, который вы хотите, находится в каталоге cvtest1 / app, и из представления проекта он выглядит как build.gradle (Module: app) . Обратите внимание на значения этих четырех полей:

    • CompileSDKVersion (мой говорит 23)
    • BuildToolsVersion (мой говорит 23.0.2)
    • MinSdkVersion (мой говорит 19)
    • TargetSdkVersion (мой говорит 23)
  7. Теперь у вашего проекта есть каталог cvtest1 / OpenCVLibrary310, но он не отображается в представлении проекта:

Введите описание изображения здесь

Используйте другой инструмент, например, любой файловый менеджер, и перейдите в этот каталог. Вы также можете переключить представление проекта с Android на файлы проекта, и вы можете найти этот каталог, как показано на этом скриншоте: Введите описание изображения здесь

Внутри есть еще один файл build.gradle (он выделен в приведенном выше скриншоте). Обновите этот файл четырьмя значениями с шага 6.

  1. Повторно запустите проект, а затем очистите его / восстановите. (Меню: / Build / Clean_Project ) Он должен очищать и строить без ошибок, и вы должны увидеть много ссылок на : openCVLibrary310 на экране 0: Сообщения .

    Введите описание изображения здесь

    На этом этапе модуль должен отображаться в иерархии проекта как openCVLibrary310 , как и приложение . (Обратите внимание, что в этом маленьком раскрывающемся меню я переключился с Project View на Android View ). Вы также должны увидеть дополнительный файл build.gradle в разделе «Gradle Scripts», но я обнаружил, что интерфейс Android Studio немного глючит, и иногда он не делает этого сразу. Поэтому попробуйте выполнить повторную синхронизацию, очистку и даже перезагрузку Android Studio.

    Вы должны увидеть модуль openCVLibrary310 со всеми функциями OpenCV в java, как на этом скриншоте:

    Введите описание изображения здесь

  2. Скопируйте каталог {unzip-dir} / sdk / native / libs (и все под ним) в проект Android, в cvtest1 / OpenCVLibrary310 / src / main / , а затем переименуйте свою копию из libs в jniLibs . Теперь у вас должен быть каталог cvtest1 / OpenCVLibrary310 / src / main / jniLibs . Повторно протестируйте проект, и этот каталог теперь должен появиться в представлении проекта в openCVLibrary310 .

    Введите описание изображения здесь

  3. Перейдите в метод 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 Monitor вы должны увидеть такие строки: Введите описание изображения здесь (Я не знаю, почему эта строка с сообщением об ошибке)

  4. Теперь попробуйте использовать некоторый код openCV. В приведенном ниже примере я скопировал файл .jpg в каталог кэша приложения cvtest1 на эмуляторе Android. Код ниже загружает это изображение, запускает алгоритм обнаружения байтового края и затем записывает результаты обратно в .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); 
  5. Запустите приложение. Ваш эмулятор должен создать черно-белое «краевое» изображение. Вы можете использовать Android Device Monitor для получения вывода или записи активности для его отображения.

Готча :

  • Если вы снижаете целевую платформу ниже KitKat, некоторые из библиотек OpenCV больше не будут работать, в частности классы, связанные с org.opencv.android.Camera2Renderer и другие связанные классы. Вы можете обойти это, просто удалив соответствующие файлы OpenCV .java.
  • Если вы поднимете свою целевую платформу на Lollipop или выше моего примера загрузки файла, возможно, он не сработает, потому что использование абсолютных путей к файлу неодобрительно. Поэтому вам может потребоваться изменить пример загрузки файла из галереи или в другое место. Есть множество примеров, плавающих вокруг.

Для всех, кто чувствовал, что они хотят убежать со всеми шагами и скриншотами на (больших!) Выше ответах, это сработало для меня с android studio 2.2.1 :

  1. Создайте новый проект, назовите его так, как вы хотите, и возьмите по умолчанию (minSdkVersion 15 в порядке).
  2. Загрузите zip-файл здесь: https://sourceforge.net/projects/opencvlibrary/files/opencv-android/ (я загрузил версию 3.1.0). Редактировать: 3.2.0 работает также
  3. Разархивируйте zip-файл, лучшее место в вашей папке рабочего пространства, но это не имеет большого значения.
  4. Внутри Android Studio щелкните File->New-> Import Module и перейдите в \path_to_your_unzipped_file\OpenCV-android-sdk\sdk\java и нажмите «ОК», затем примите все диалоги по умолчанию.
  5. В файле gradle вашего модуля app добавьте это в блок зависимостей:

     dependencies { compile project(':openCVLibrary320') //rest of code } 

Любой, кто сталкивается с проблемой при создании jniLibs cpp, показан. Просто добавьте ndk ..

Вы также можете добавить эту библиотеку в build.gradle

 dependencies{ compile 'org.opencv:opencv-android:2.4.8' }