要创建具有 OpenCV 库支持的新原生 Android 应用程序,你应该在你的机器上重现以下步骤:
从(https://opencv.org/releases/)下载最新的 OpenCV SDK :
下载最新的 OpenCV — 4.6.0 用于 Android 开发
笔者在撰写本文时,最新的 OpenCV 版本是 4.6.0。
解压 opencv-4.6.0-android-sdk.zip
创建一个新的Android Native应用程序:
创建一个新的 Android Native App 项目
使用以下命令将 OpenCV SDK 作为新模块导入:
文件 → 新建 → 导入模块... → (找到路径OpenCV-android-sdk\sdk) → 完成
将 OpenCV-SDK 作为新模块导入
4.1(可选)在导入之后,你可能会收到如下错误:
未找到 ID 为“kotlin-android”的插件
修复此问题,你可以在(https://github.com/react-native-webview/react-native-webview/issues/1407#issuecomment-634436481)中找到,或者只需将下一行添加到android/build.gradle:opencv
:
buildscript {
ext {
kotlinVersion = "1.3.72"
}
repositories {
google()
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
在build.gradle:app和build.gradle:opencv中设置相同的SDK版本。例如:
android {
compileSdkVersion 32
defaultConfig {
minSdkVersion 21
targetSdkVersion 26
...
将 OpenCV-SDK 作为模块依赖添加到项目中:
文件→项目结构...→依赖项→选择应用程序→+→模块依赖项→OpenCV4→确定→确定
将 OpenCV 依赖添加到 CMakeLists.txt(编辑模板):
cmake_minimum_required(VERSION 3.18.1)
include_directories(H:\\OpenCV-android-sdk\\sdk\\native\\jni\\include)
add_library( lib_opencv SHARED IMPORTED )
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION H:\\OpenCV-android-sdk\\sdk\\native\\libs\\${ANDROID_ABI}\\libopencv_java4.so)
并添加libopencv
到 target_link_libraries:
target_link_libraries( # Specifies the target library.
cppdemoproject1
lib_opencv
# Links the target library to the log library
# included in the NDK.
${log-lib})
通过向 OpenCV 库添加一些本机调用来检查依赖项是否正常工作。
8.1 在 nativ-lib.cpp 中添加原生函数:
#include
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_validate(JNIEnv *env, jobject thiz, jlong mad_addr_gr,jlong mat_addr_rgba) {
cv::Rect();
cv::Mat();
std::string hello2="hello from validate";
return env->NewStringUTF(hello2.c_str());
// TODO: implement validate()
}
8.2 在 MainActivity.java 中添加 native 函数调用和定义:
if (OpenCVLoader.initDebug()) {
tv.setText(tv.getText()+"\n OPENCV LOADED SUCCESSFULLY");
tv.setText(tv.getText()+"\n"+validate(500,500));
} else {
Log.d(TAG, "OPENCV DİD NOT LOAD");
}
定义原生函数:
public native String validate(long madAddrGr,long matAddrRgba);
构建并运行你的应用程序并检查结果:
你应该看到这个视图,带有来自 OpenCV 方法的字符串
☆ END ☆
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。
↓扫描二维码添加小编↓