Android项目中集成OpenCV完整过程!包含报错解决
本文记录了在Android项目中集成OpenCV并实现文档扫描功能的过程。首先,从OpenCV官网下载适用于Android的压缩包并解压,将sdk模块导入到Android Studio项目中。接着,确保项目和导入模块的SDK版本一致,并解决可能出现的Kotlin JVM版本问题。通过配置build.gradle文件和使用OpenCVLoader.initDebug()初始化OpenCV,最终完成集
目录
三、修改Android项目SDK版本和导入的模块SDK版本保持一致
由于作者最近在公司开发一款扫描类的APP,在APP中有一个文档扫描功能需要用到OpenCV去实现对文档照片的透视变换。说得简单一些就是对照片中的文档进行矫正,让它看起来像平铺,也就是你拍照的角度无论是什么样子最后经过矫正之后看起来就跟正面差不多。本文章用于记录在Android项目中集成OpenCV以及解决集成过程中问题的完整过程,如果有人遇到相同的问题希望本篇文章能够帮助到大家,话不多说开始操作。
一、官网下载Android的OpenCV压缩包
首先我们要去Releases - OpenCV官网下载一个Android的OpenCV的压缩包,下载什么版本全看个人爱好。如下图所示有很多版本,我使用的是OpenCV-4.10.0版本,点击页面上的Android图标就会自动下载。

二、解压并在Android项目中导入其中的SDK模块
压缩包有了之后我们直接解压,得到的项目目录结构如下图所示:

其中sdk这个目录是我们需要导入到自己项目中的,接下来打开你的AndroidStudio(当然你得先有一个项目才行,我这里是使用的一个Demo项目先测试一下实现效果),在右上角点击File-->New-->import Module,请按照下图的指引去操作。

接下来就会弹出如下界面,在Source directory中选择你下载解压后的opencv-x.xx.x-android-sdk文件夹中的sdk文件夹,并且在Module name中给模块起一个名称lib_opencv,然后点击Finish该模块就会导入到你的项目中了,到这你已经完成得差不多了但是请继续往下看。

三、修改Android项目SDK版本和导入的模块SDK版本保持一致
首先打开你项目的app目录查看一下build.gradle配置文件中targetSdk的版本,然后再去你导入的lib_opencv模块中找到build.gradle配置文件。看一下项目中SDK版本是不是和模块中配置文件里的SDK版本一致,如果不一致将模块中build.gradle中的targetSdkVersion版本改成和项目一样,这一步完成后就差不多了,如下图所示。

四、解决KotlinJVM版本问题
如果以上步骤你全部都完成了,别忘记点一下Sync Project with Gradle Files同步一下项目。还有在代码中使用OpenCV之前记得先初始化一下,如果你运行项目没有报错那么恭喜你,算你小子运气好😤。
OpenCVLoader.initDebug()
如果你报的错和我下面图中展示的一样的话,那么恭喜你,你先别急继续往下看。

这个就是一个JVM版本不一致的问题,首先去lib_opencv模块下面的build.gradle中加上这么一段配置来统一一下JVM的版本。
kotlinOptions {
jvmTarget = "1.8"
}

接着请继续运行你的项目,再看一下有没有报错。如果是有显示关于 Kotlin插件的报错,那么将下面这段配置添加到你project级别的build.gradle配置文件的最上面,请记住一定要放到最上面才行!如果你运行项目还是报Kotlin插件的问题,那么请你手动修改一下ext.kotlin_version那里的版本再尝试运行项目。
buildscript {
ext.kotlin_version = '1.8.0'
repositories {
google()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// 其他 classpath ...
}
}

如果以上问题你都解决了那么恭喜你,你已经将OpenCV库集成到你自己的Android项目中了,你可以在Android项目中调用OpenCV中的函数去完成一些操作。我会将Demo项目放到本文章的附件中,在Demo项目中已经实现了简单的图像矫正的功能,大家可以去下载。如果你有遇到其他的问题或者你有更好的文档图片矫正的实现方案,欢迎大家在评论区留言。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)