如何在android studio上加入OpenCV库

本文介绍了如何在AndroidStudio中成功加入OpenCV库,并提供了详细的配置指南,包括下载、文件组织、Gradle配置、依赖引入等关键步骤。同时,文章还指出了在操作过程中需要注意的一些常见问题,帮助开发者避免常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上找了很久,找到的关于在android studio中加入OpenCV 库的相关资料很少,而且解释的不是很清楚,配置的时候做了十几遍才成功。


参考http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool


将上述资料综合一下,并加入了一些注意事项记录下来。新手可以参考下。介绍了如何在android studio 中加入opencv库,并对需要用到opencv的model添加相关性。


1.下载 OpenCV Android SDK (我下的是2.4.8版本的,在后面一些设置中不同版本会有些不同),并将下载的OpenCV-2.4.8-android-sdk中的sdk文件夹中的java文件夹 重命名为 opencv

2.在android studio的工作区的根目录下(我这里的工作区叫MyApplication)创建一个libraries 文件夹,将刚才的opencv文件夹整个复制到新建的libraries里面。

3.在android studio中,在opencv的根目录处新建一个 build.gradle文件



4.在build.gradle 文件中添加如下代码

apply plugin: 'android-library'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
        versionCode 2480
        versionName "2.4.8"
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
            aidl.srcDirs = ['src']
        }
    }
}
特别注意,其中的versionName 改为你自己下载的OpenCV的版本号,其他的compileSdkVersion和minSdkVersion和targetSdkVersion等一些设置需要和你建的model的设置一样。不一样会出错。如下图


5.在工作区根目录的 settings.gradle 中添加以下代码,改动之后会提示你需要sync,点sync now

include ':libraries:opencv'
6.在你需要用到opencv的model的/src/main文件夹下新建一个jniLibs文件夹。将 刚才下载的OpenCV-2.4.8-android-sdk/sdk/native/libs中的文件拷贝进来。

7.在刚才那个model根目录的build.gradle 中的dependency下添加以下代码

compile project(':libraries:opencv')



到这里为止就设定好了



### 减少OpenCV大小的方法 #### 选择特定模块 并非所有的应用程序都需要完整的OpenCV功能集。因此,只引入所需的模块能够显著减小最终APK的尺寸[^1]。 对于仅需基本图像处理能力的应用程序来说,可能只需要core和imgproc这两个核心模块。而像aruco这样的高级特性则可以根据需求决定是否加入。 #### 使用预构建二进制文件而非源码编译 当采用`compile project(':openCVLibrary310')`方式集成时,默认情况下会包含整个OpenCV的所有组件。相比之下,直接引用官方发布的.aar或.jar形式的预构建版本,并指定所需架构(armeabi-v7a, arm64-v8a等),有助于进一步缩小体积[^2]。 ```gradle implementation 'org.opencv:opencv-android:4.5.1' ``` 注意上述命令中的版本号应替换为最新稳定版。 #### 移除未使用的.so文件 通常而言,OpenCV分发包内含有针对不同CPU指令集优化过的共享对象(.so)文件。然而并不是每种架构都适用于目标设备。可以通过Gradle脚本过滤掉不必要的ABI支持: ```groovy android { ... defaultConfig { ndk { abiFilters "armeabi-v7a", "arm64-v8a" } } } ``` 此设置表明只会打包ARMv7及AArch64平台下的原生代码,从而节省空间[^3]. #### 压缩资源文件 除了裁剪动态链接外,还可以对图片素材实施无损压缩算法降低其占用量。此外,利用ProGuard混淆工具去除冗余类成员也有助于精简整体规模[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值