OpenCV в Android Studio



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




конфигурация с именем 'default' не найдена




Что может быть не так?



Я использую Android Studio 1.0 с gradle 2.2.1.

830   6  

6 ответов:

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

  1. скачать последний OpenCV sdk для Android от OpenCV.org и распакуйте zip-файл.
  2. импорт OpenCV в Android Studio С File - > New - > Import Module выберите sdk / java папка в распакованном архиве opencv.
  3. обновление.gradle в разделе импортированный модуль OpenCV для обновления 4 полей в соответствии с вашим проектом сборки.gradle a) compileSdkVersion b) buildToolsVersion c) minSdkVersion и d) targetSdkVersion.
  4. добавить зависимость модуля by Приложение -> Настройки Модуля и выберите зависимости tab. Нажмите + значок внизу, выберите Зависимость Модуля и выберите импортированную Модуль OpenCV.
    • для Android студия версии v1.2.2, чтобы доступ к настройкам модуля : в представлении проекта щелкните правой кнопкой мыши зависимый модуль - > Открыть Настройки Модуля
  5. скопировать библиотеки под sdk / native в Android Studio под app / src / main.
  6. В 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 являются

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

интеграция OpenCV v3.1.0 в Android Studio v1.4. 1, инструкции с дополнительной детализацией и это-то, что вы должны получить скриншоты типа.

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

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

  1. создайте новый проект Android Studio с помощью мастера проектов (меню: / File / New Project):

    • назвать ее " cvtest1"
    • формат: API 19, Android 4.4 (KitKat)
    • Пустой Активности по имени MainActivity

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

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

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

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

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

      Android Studio начинает импортировать модуль, и вы увидите импорт-резюме.txt файл, который имеет список того, что не было импортировано (в основном файлы javadoc) и другие части информации. enter image description here

      но вы также получаете сообщение об ошибке говоря не удалось найти цель с хэш-строкой "android-14".... Это происходит из-за сборки.файл gradle в zip-файле OpenCV, который вы загрузили, говорит о компиляции с использованием Android API версии 14, который по умолчанию у вас нет с Android Studio v1.4.1. enter image description here

  5. откройте диалог структура проекта (Меню: / File / Project_Structure). Выберите модуль "приложение", нажмите на кнопку зависимости tab и добавить : openCVLibrary310 как зависимость модуля. При выборе Добавить/Module_Dependency он должен появиться в списке модулей, которые можно добавить. Теперь он будет отображаться как зависимость, но вы получите еще несколько не могу найти-android-14 ошибки в журнале событий.

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

    • compileSDKVersion (мой говорит 23)
    • buildToolsVersion (мой говорит 23.0.2)
    • minSdkVersion (мой говорит 19)
    • targetSdkVersion (мой говорит 23)
  7. ваш проект теперь имеет cvtest1 / OpenCVLibrary310 каталог, но он не виден из представления проекта:

enter image description here

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

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

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

    enter image description here

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

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

    enter image description here

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

    enter image description here

  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 Монитор: enter image description here (Я не знаю, почему эта строка с сообщением об ошибке есть)

  4. теперь попробуйте на самом деле использовать некоторый код 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);
    
  5. выполнить приложение. Ваш эмулятор должен создать черно-белое изображение "края". Вы можете использовать монитор устройства Android чтобы получить вывод или написать действие, чтобы показать его.

The Gotchas:

  • если вы опустите свою целевую платформу ниже KitKat, некоторые из библиотек OpenCV больше не будут работать, в частности, классы, связанные с org.в формате OpenCV.андроид.Camera2Renderer и другие классы. Вы, наверное, можете обойти это путем простого удаления apprpriate в формате 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. распакуйте zip-файл, лучшее место находится в папке рабочего пространства, но это не имеет особого значения.
  4. внутри Android Studio, нажмите кнопку File->New-> Import Module и выберите \path_to_your_unzipped_file\OpenCV-android-sdk\sdk\java и нажмите кнопку ОК, а затем принять все диалоговые окна по умолчанию.
  5. на вашего app модуль, добавьте это в блок зависимостей:

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

где XYZ-это точная версия, которую вы загружаете, например, в моем случае:

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

показан любой, кто сталкивается с проблемой при создании jnilibs cpp ..просто добавьте НДК ..

интеграция Opencv с android studio

те, кто хочет иметь Видео youtube для того же, попробуйте с последней версией opencv, хотя (3.4.0), моя удача была недостаточно хороша для показанной версии(2.4.9) (в формате OpenCV-релизы).

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

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

Comments

    Ничего не найдено.