JavaCV + Android Studio + gradle-возможно?
Я пытаюсь использовать JavaCV с Android Studio и Gradle. Я написал такой фрагмент кода:
repositories {
mavenCentral()
maven {
url "http://maven2.javacv.googlecode.com/git/"
}
}
dependencies {
compile files('libs/android-support-v4.jar')
compile group: 'com.googlecode.javacpp', name: 'javacpp', version: '0.5'
compile group: 'com.googlecode.javacv', name: 'javacv', version: '0.5'
}
и я вижу импортированные библиотеки во внешних библиотеках dir. Поэтому я попытался запустить это:
...
IplImage zdjecie=cvLoadImage(Environment.getExternalStorageDirectory().getPath()+ "/1.bmp");
cvSaveImage(Environment.getExternalStorageDirectory().getPath()
+ "/2.bmp", zdjecie);
...
и я получил ошибку:
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load jniopencv_core: findLibrary returned null
...потому что я не знаю, что мне делать с opencv (и другими) .Итак, файлы.
Итак, как мы должны использовать JavaCV в Android Studio?
7 ответов
1.ПРЕДУПРЕЖДАЮЩИЙ: этого недостаточно!:
dependencies { compile group: 'org.bytedeco', name: 'javacv', version: '0.9'}
2.EDIT: извините за ошибку, мое недавнее решение, которое
Я разместил здесь, и это сказало только о строке выше, было неправильно. Но я проверил это, и это работает для меня:
a) добавить зависимости
dependencies {
compile group: 'org.bytedeco', name: 'javacv', version: '0.9'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.9-0.9', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.3-0.9', classifier: 'android-arm'
}
b) создать jniLibs dir внутри вашего проекта (на том же уровне, что и обычные libs dir. EDIT: если
у вас есть некоторые проблемы, попробуйте переместить jniLibs в app/src/main).
c) добавить обязательно .Итак, файлы, извлеченные из opencv-android-arm.jar и ffmpeg-android-arm.jar (или только эти файлы, которые вам действительно нужны) для создания jnilibs dir. (Если вы не знаете, о чем
Я говорю, что вы можете скачать javacv-0.9-bin.zip from страница JavaCV и внутри него
вы можете найти эти 2 .файлы jar.)
вставить внутрь build.gradle
зависимости работали для меня:
compile ‘org.bytedeco:javacv:+’
compile group: ‘org.bytedeco.javacpp-presets’, name: ‘opencv’, version: ‘2.4.10–0.10', classifier: ‘android-arm’
compile group: ‘org.bytedeco.javacpp-presets’, name: ‘ffmpeg’, version: ‘2.5.1–0.10', classifier: ‘android-arm’
для современного решения (JavaCV 1.1 и Android Studio 2.1.1), пожалуйста, смотрите мои пошаговые инструкции в моем суть. JavaCV 1.2 В настоящее время не нравится Android 6.
этот tut будет использовать JavaCV 1.1, версия 1.2 В настоящее время имеет проблема SIGSEGV. JavaCV 1.1 поставляется с FFmpeg 2.8.1.
- получить двоичные файлы prebulit здесь.
- распакуйте его и скопируйте эти файлы:
- javacpp.Джар (важно).
- javacv.Джар (важно).
- через FFmpeg.Джар (важно, если вы используете FFmpeg).
- ffmpeg-android-arm.Джар (для процессора arm).
-
ffmpeg-android-x86.Джар (необязательно для процессора x86).
в
libs
папка вашего проекта (app/libs
в моем случай.)
- нажать на кнопку
app
->F4
->Dependencies
->+
->File dependencies
- > выберите все предыдущие .Джар. - временно, из-за этот вопрос, нам нужно установить
targetSdkVersion 22
приложенияbuild.gradle
. - возможно, нужно установить эти
packagingOptions
наbuild.gradle
:
android { compileSdkVersion 23 buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.test"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties'
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml'
//might need these if you use openCV
//exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties'
//exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml'
}
}
к сожалению, у меня были некоторые проблемы с решением user2645214 (все еще получая java.ленг.UnsatisfiedLinkError), но я нашел еще один, поэтому решил поделиться им с теми, у кого будет такая же проблема.
С момента выпуска 0.7.3 есть еще один способ включить ваш *.Итак, файлы - вы можете просто поместить их в /src/main / jniLibs (просто создайте каталог jniLibs, если у вас его нет), и он должен работать.
также моя сборка.файл Gradle выглядит так:
apply plugin: 'android'
repositories {
mavenCentral()
maven { url 'http://maven2.javacv.googlecode.com/git/' }
}
dependencies {
compile 'com.android.support:appcompat-v7:20.+'
compile 'com.googlecode.javacpp:javacpp:0.7'
compile 'com.googlecode.javacv:javacv:0.7'
}
android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
defaultConfig {
applicationId "com.example.agp.testapplication2"
minSdkVersion 15
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
я столкнулся с этой проблемой в Windows 7 x64. Вот раздел из моего gradle.создайте файл, который решил проблему:
compile("org.bytedeco:javacv:0.11")
compile("org.bytedeco.javacpp-presets:opencv:2.4.11-0.11:windows-x86_64")
compile("org.bytedeco.javacpp-presets:ffmpeg:2.6.1-0.11:windows-x86_64")
правка. Решение в этом посте устарело и может содержать некоторые ошибки. Смотрите последние, правильный пост внизу страницы.
хорошо, я сделал это самостоятельно :). Так вот что мы должны сделать, чтобы использовать JavaCV в Android Studio:
1) Сначала мы должны добавить такие зависимости для сборки.gradle внутри проекта:
dependencies {
compile group: 'com.googlecode.javacpp', name: 'javacpp', version: '0.7'
compile group: 'com.googlecode.javacv', name: 'javacv', version: '0.7'}
(Я имею в виду: построить.Gradle в в нашем каталоге модуль)
Спасибо, что мы получаем javacv.банка и javacpp.фляги внутри внешних библиотек (если нет, мы следует перезапустить Android Studio).
2) если мы следуем инструкции Eclipse на официальный сайт javacv сейчас мы находимся в точке 4.:
извлечь все *.Итак, файлы rom javacv-android-arm.сосуд, opencv-2.4.8-android-arm.jar, и ffmpeg-2.1.1-android-arm.сосуд непосредственно во вновь созданную папку "libs/armeabi", без создание любого из подкаталогов, найденных в JAR файлы.
мы должны извлечь все *.Итак, файлы, которые нам нужны, но тогда мы должны присоединиться к ним в нашем проекте в других особым образом: 3-й ответ здесь говорит об этом!--20--> но в целом, мы должны:
- создать новый каталог "armeabi"
- поставить интересно .Итак, файлы в каталог "armeabi"
- создать armeabi.zip
- изменить расширение armeabi.zip в armeabi.Джар
- поставить норм.jar to' libs ' directory
- убедитесь, что построить.gradle нашего модуля содержит такую зависимость:
compile fileTree (dir:' libs', include: ['*.jar'])
3) наслаждайтесь OpenCV и JavaCv в Android Studio (и не забудьте добавить
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
к вашему AndroidManifest.xml, если вы хотите прочитать / Сохранить Изображение с / на sdcard и попробовать это, что ваш проект работает ну.)
/////////////////////////////////////////////////////////
Если что-то не так, пожалуйста, напишите об этом в комментариях.
Если вы попробуете с javacv 1.2, мы должны сделать некоторые дополнительные шаги, чтобы заставить это работать. Вот мое телосложение.файл gradle
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "org.audiorecording"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties'
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml'
//might need these if you use openCV
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties'
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml'
}
}
repositories {
mavenCentral()
}
configurations {
all*.exclude group: 'org.bytedeco', module: 'javacpp-presets'
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
compile 'org.bytedeco:javacv:1.2'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.1.0-1.2', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '3.0.2-1.2', classifier: 'android-arm'
}