首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaCV + Android + gradle-可能吗?

JavaCV + Android + gradle-可能吗?
EN

Stack Overflow用户
提问于 2014-01-02 19:15:31
回答 7查看 12.3K关注 0票数 15

我正在尝试在Android和Gradle中使用JavaCV。我写了这样的代码片段:

代码语言:javascript
运行
复制
   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外部图书馆中看到了导入的图书馆。所以我试着做这个:

代码语言:javascript
运行
复制
...
  IplImage zdjecie=cvLoadImage(Environment.getExternalStorageDirectory().getPath()+ "/1.bmp");
    cvSaveImage(Environment.getExternalStorageDirectory().getPath()
    + "/2.bmp", zdjecie);
...

我犯了错误:

代码语言:javascript
运行
复制
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load jniopencv_core: findLibrary returned null

...because我不知道如何处理opencv的.so文件(以及其他文件)。

那么我们应该如何在Android中使用JavaCV呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-08-31 19:51:02

1.警告:--这还不够!:

代码语言:javascript
运行
复制
  dependencies { compile group: 'org.bytedeco', name: 'javacv', version: '0.9'}

2.编辑:对不起,我最近的解决方案是错误的,我贴在这里,只告诉了上面的一行。但我查过了,这对我有用:

(A)添加依赖项

代码语言:javascript
运行
复制
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相同的级别)。编辑:如果您有一些麻烦,尝试将jniLibs移动到app/src/main)。

( c)添加从OpenCV-Androd-arm.jar和ffmpeg-android-arm.jar (或您真正需要的文件)中提取的必需.so文件,以创建jniLibs dir。(如果你不知道我在说什么,你可以从JavaCV页面下载javacv-0.9-bin.zip,在里面你可以找到这2 .jars)。

票数 4
EN

Stack Overflow用户

发布于 2015-05-20 09:37:58

build.gradle依赖项中插入对我有用:

代码语言:javascript
运行
复制
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’
票数 4
EN

Stack Overflow用户

发布于 2016-05-25 04:04:30

有关最新的解决方案(JavaCV 1.1和AndroidStudio2.1.1),请参阅我在要旨中的逐步说明。JavaCV 1.2目前不喜欢Android6。

这个tut将使用JavaCV 1.1,版本1.2目前有SIGSEGV问题。JavaCV 1.1附带了FFmpeg 2.8.1。

  1. 获取prebulit二进制文件这里
  2. 解压缩并复制这些文件:
    • javacpp.jar (essential)。
    • javacv.jar (essential).
    • ffmpeg.jar (如果您使用FFmpeg,则必须使用FFmpeg)。
    • 安卓-arm.jar(用于arm CPU)。
    • ffmpeg-Androd-x86.jar( x86 CPU可选)。进入项目的libs文件夹(在我的例子中是app/libs)。

  1. 单击app -> F4 -> Dependencies -> + -> File dependencies ->选择所有以前的.jar。
  2. 暂时,由于本期,我们需要设置targetSdkVersion 22应用程序的build.gradle
  3. 可能需要在packagingOptions中设置这些build.gradle

安卓{ compileSdkVersion 23 buildToolsVersion "23.0.3“

代码语言:javascript
运行
复制
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'
}

}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20890116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档