本文详细说明给android项目添加opencv库的详细步骤,并通过实现图片灰度化来查看配置是否成功。
下载OPENCV ANDROID SDK
到官网下载
打开 https://opencv.org/releases/
选择android,下载完成后解压出下面的文件:
安装android sdk 和 ndk
在Android studio中打开sdk管理器即可下载:
新建C++工程
打开Android studio,选择模板,这时选择最后一项Native C++,然后进入配置界面。
配置项目
选择C++14
配置OpenCV库
OpenCV库作为Module导入
导入OpenCV模块
具体步骤为:File->New->Import Module:
然后将OpenCV-android-sdk\sdk目录导入,最好顺便将模块名改成opencv+版本号。如下图,然后Next->Finish。
改OpenCV下的build.gradle文件, 将下图中的两处改为与app模块的设置一致
添加依赖,菜单栏选择File->Project Structure,在Dependencies选项中选择app,点击+,选择Module dependency,如下图:
勾选OpenCV,点击OK,等待同步
配置参数,打开app的build.gradle,在android.defaultConfig下面添加如下配置:
externalNativeBuild {cmake {cppFlags '-std=c++14 -frtti -fexceptions'abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'arguments "-DOpenCV_DIR=" + project(":opencv480").projectDir + "/native/jni",'-DANDROID_STL=c++_shared'}}
这时环境就算配置好了。
下面用一个简单和灰度化验证一下。
灰度化
关键代码:
override fun onResume() {super.onResume()if (!OpenCVLoader.initDebug()){Log.i("main","未找到内部的opencv库")}else{Log.i("main","发现了内置的opencv库");doGray()}}private fun doGray(){val bitmap = BitmapFactory.decodeResource(resources,R.drawable.ldh)val bit = bitmap.copy(Bitmap.Config.ARGB_8888,false)val src = Mat(bit.height,bit.width,CvType.CV_8UC(3))Utils.bitmapToMat(bit,src)Imgproc.cvtColor(src,src,Imgproc.COLOR_BGR2GRAY)Utils.matToBitmap(src,bitmap)binding.sampleImage.setImageBitmap(bitmap)}
效果:
成功!!