首页IT科技android集成uniapp(在Android端集成OpenCV的三种方式)

android集成uniapp(在Android端集成OpenCV的三种方式)

时间2025-07-15 11:17:08分类IT科技浏览8165
导读:1.Opencv Android SDK 基于Opencv C++本地代码,通过Java语言接口使用JNI技术调用C++本地方法的SDK开发包。...

1.Opencv Android SDK

基于Opencv C++本地代码                 ,通过Java语言接口使用JNI技术调用C++本地方法的SDK开发包                。

(1)etc:各类模型文件存储地址

(2)java:Java版本的Android SDK相关文件

(3)native:JNI层开发所需头文件                        ,C++编译好的Opencv Android平台支持的本地库文件        ,Cmake文件(*.a,*.so)                         。

2.环境搭建

(1)Opencv Android SDK

(2)JDK8

(3)Android studio

(4)Android SDK与NDK开发包                 ,CMAKE

3.Android接入Opencv的三种方式

(1)接入OpenCV的Java SDK 包                         ,直接在Java调用OpenCV方法;

新建Android项目 导入Opencv Android SDK依赖项 修改Gradle文件使之保持一致并编译 添加本地依赖项Opencv库文件        ,成功后在app中的build.gradle中dependencies {implementation project(path: sdk)} 在project structure中配置好ndk版本

一个小例子:点击按钮实现Java调用opencv库进行图像灰度显示

实现步骤:

新建一个Android项目 导入Opencv Android SDK   (file-new-import moudle-Opencv-android-sdk/sdk) 添加Opencv android sdk依赖项到库文件  (file-project structure-Dependencies + moudle implementation-Opencv-android-sdk) 修改Gradle文件使之相关参数保持一致        。   (项目中的build.gradle和Opencvm android sdk中的build.gradle) 在Layout文件activity_main.xml中添加布局        ,控件 在MainActivity.java实现Opencv图像处理功能   import opencv相关函数功能   加载Opencv本地库   为按钮添加监听事件   实现Bitmap到Mat的转换                         ,使用opencv函数实现对Mat的处理                ,最终将Mat再转换为Bitmap使之在页面显示        。

(2)使用OpenCV SDK提供的C++头文件与.so动态库与.a静态库        ,封装JNI使用C++实现调用;

Android Studio2.2前版本NDK开发流程:

编写C/C++文件,创建一个java文件                         ,声明一个自定义的native方法即java层到native层的入口 使用静态域将so包加载进来     使用ndk编译so包                ,编写Android.mk, Application.mk,在gradle中指定so库的路径,gradle会自动将so文件打包进来                         ,在andorid闭包中添加.

Android Studio3.0后的版本NDK开发流程:

在SDK Tools中下载CMake                、LLDB                         、NDK 创建一个新项目                        ,并勾选Include C++ support 项目创建完毕会有一个c++的hello world示例, 其中cpp和External Build Files 用于放置C++源文件 和不同的ABI版本CMake脚本                 ,将Opencv Android sdk直接放到cpp文件夹下                        ,使用cmake实现opencv库的调用                         。 在MainActivity中添加一个native方法        ,然后选中                 , 按下alt+enter让IDE自动生成C++函数 在native-lib.cpp中可以看见自动生成的函数                         ,使用JNI实现其cpp文件的调用                 。

一个小例子:在安卓端自建C++项目实现opencv相关图像处理功能

实现步骤:

创建一个新项目        ,并勾选Include C++ support  (activity_main.xml,MainActivity.java,native-lib.cpp) 将opencv sdk放入app/src/main/cpp下        ,实现在cpp文件中使用opencv   (cpp/opencv341/sdk/native/jni/include/opencv2)注:导入opencv contrib扩展库可以在网上直接下载编译好的sdk                         ,需对cmakelist.txt做以下修改: 添加set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv341/sdk/native/jni) 添加find_package(OpenCV REQUIRED core imgproc highgui ximgproc photo)  在target_link_libraries里添加${OpenCV_LIBS} 在Layout文件activity_main.xml添加相关的布局和控件 在MainActivity.java中添加按钮监听事件                ,在监听事件 里添加native方法并自动在native-lib.cpp中生成该函数 在native-lib.cpp中实现图像处理功能并返回图像显示        , 使用JNI进行调用        。

(3)将OpenCV的源码重新编译成Android SDK库                        。

编译所需配置:

JDK Android-sdk Apache-ant Android-ndk cmake:生成Makefile mingw:使用mingw编译 opencv源码 opencv_contrib源码

好处:可以获取到opencv最新的功能

缺点:编译较为复杂                         ,且新的代码或许会存在不兼容与错误                 。 

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
mac big sur 更新卡住了(苹果macOS Big Sur更新了哪些内容?macOS Big Sur详细更新内容一览) seo如何优化网站步骤(seo怎样才能优化网站)