终极篇延伸:在android native c++项目中直接内嵌opencv算法

这篇文章看题目让人有点眼晕,且与之前的文章:终极篇 C++算法到安卓的移植——AS调用VS的so库有类似的嫌疑

 

那么这篇文章整理的目的是什么呢?

  • 在安卓项目中以c++的方式调用opencv
  • 可以一次生成x86 x86_64 armeabi-7v armx64-v8a相关库文件,不用根据平台不同再特别设置opencv的配置,且只用设置一次(我在vs2019中就需要设置多次,四个平台Release下就设置了4次)

 

所需软件:android studio3.5(安装好之后配置sdk,jdk,ndk)

opencv-android-sdk (opencv官网直接下载,解压到固定路径)

 

第一步:新建项目,选择native c++

建好之后在/app/src/main/cpp文件夹下默认生成一个native-lib.cpp和CmakeList.txt

第二步:修改生成的so库名称

默认情况下生成的库名称为native-lib.so

打开native-lib.cpp和CmakeList.txt 这两个文件,将native-lib出现的地方全都修改为想要生成的库名称,这里我改为textdetection-lib.so。(包括文件名称都要改)

 

第三步:配置opencv,使得opencv可以在cpp文件中以c++的方式调用

1. 修改CmakeList.txt 文件

终极篇延伸:在android native c++项目中直接内嵌opencv算法_第1张图片

终极篇延伸:在android native c++项目中直接内嵌opencv算法_第2张图片

2. 修改app/build.gradle文件,配置opencv和平台设置信息

终极篇延伸:在android native c++项目中直接内嵌opencv算法_第3张图片

3. 配置好后,需要将opencv-android-sdk中的文件夹sdk\native\libs下的所有文件拷贝到安卓项目的src/main/jinLibs文件夹下

 

第四步:修改textdetection-lib.cpp文件,以c++方式调用opencv

终极篇延伸:在android native c++项目中直接内嵌opencv算法_第4张图片

第五步: 显示结果,修改MainActivity.java

终极篇延伸:在android native c++项目中直接内嵌opencv算法_第5张图片

第六步:编译运行

编译:菜单栏-- -Build ---- Build Boulds / APK ---- Build APK

分析APK:菜单栏-- -Build ---- Analyze APK,这时可以看到所有平台的结果都显示在内。

终极篇延伸:在android native c++项目中直接内嵌opencv算法_第6张图片

运行:菜单栏 ---- Run ---- Run app

我在调用dnn的readNet函数时目前有错,运行时,去掉这一句即可,原因还未找到

错误提示是加载模型文件失败,但是我在c++中可以直接这样用,不知道原因是啥

终极篇延伸:在android native c++项目中直接内嵌opencv算法_第7张图片

 

你可能感兴趣的:(android,算法移植)