• 在 Android Studio 中为 C++ 设置 OpenCV(4.6.0)


    要创建具有 OpenCV 库支持的新原生 Android 应用程序,你应该在你的机器上重现以下步骤:

    1. 从(https://opencv.org/releases/)下载最新的 OpenCV SDK :

    b9728399fef765951507290f91477695.png

    下载最新的 OpenCV — 4.6.0 用于 Android 开发

    笔者在撰写本文时,最新的 OpenCV 版本是 4.6.0。

    1. 解压 opencv-4.6.0-android-sdk.zip

    2. 创建一个新的Android Native应用程序:

    创建一个新的 Android Native App 项目

    1. 使用以下命令将 OpenCV SDK 作为新模块导入:

    文件 → 新建 → 导入模块... → (找到路径OpenCV-android-sdk\sdk) → 完成

    将 OpenCV-SDK 作为新模块导入

    4.1(可选)在导入之后,你可能会收到如下错误:

    cad7cf838691b2e5d9641ef549f4be90.png

    未找到 ID 为“kotlin-android”的插件

    修复此问题,你可以在(https://github.com/react-native-webview/react-native-webview/issues/1407#issuecomment-634436481)中找到,或者只需将下一行添加到android/build.gradle:opencv

    1. buildscript {
    2.     ext {
    3.         kotlinVersion = "1.3.72"
    4.     }
    5.     repositories {
    6.         google()
    7.         jcenter()
    8.     }
    9.     dependencies {
    10.         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    11.     }
    12. }
    1. 在build.gradle:app和build.gradle:opencv中设置相同的SDK版本。例如:

    1. android {
    2.     compileSdkVersion 32
    3.     defaultConfig {
    4.         minSdkVersion 21
    5.         targetSdkVersion 26
    6. ...
    1. 将 OpenCV-SDK 作为模块依赖添加到项目中:

    文件→项目结构...→依赖项→选择应用程序→+→模块依赖项→OpenCV4→确定→确定

    a4753e0de69a444c65e298bfcdf91569.gif

    1. 将 OpenCV 依赖添加到 CMakeLists.txt(编辑模板):

    1. cmake_minimum_required(VERSION 3.18.1)
    2. include_directories(H:\\OpenCV-android-sdk\\sdk\\native\\jni\\include)
    3. add_library( lib_opencv SHARED IMPORTED )
    4. set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION H:\\OpenCV-android-sdk\\sdk\\native\\libs\\${ANDROID_ABI}\\libopencv_java4.so)

    并添加libopencv到 target_link_libraries:

    1. target_link_libraries( # Specifies the target library.
    2.         cppdemoproject1
    3.         lib_opencv
    4.         # Links the target library to the log library
    5.         # included in the NDK.
    6.         ${log-lib})
    1. 通过向 OpenCV 库添加一些本机调用来检查依赖项是否正常工作。

    8.1 在 nativ-lib.cpp 中添加原生函数:

    1. #include 
    2. extern "C"
    3. JNIEXPORT jstring JNICALL
    4. Java_com_example_myapplication_MainActivity_validate(JNIEnv *env, jobject thiz, jlong mad_addr_gr,jlong mat_addr_rgba) {
    5.     cv::Rect();
    6.     cv::Mat();
    7.     std::string hello2="hello from validate";
    8.     return env->NewStringUTF(hello2.c_str());
    9.     // TODO: implement validate()
    10. }

    8.2 在 MainActivity.java 中添加 native 函数调用和定义:

    1. if (OpenCVLoader.initDebug()) {
    2.     tv.setText(tv.getText()+"\n OPENCV LOADED SUCCESSFULLY");
    3.     tv.setText(tv.getText()+"\n"+validate(500,500));
    4. else {
    5.     Log.d(TAG, "OPENCV DİD NOT LOAD");
    6. }

    定义原生函数:

    public native String validate(long madAddrGr,long matAddrRgba);
    1. 构建并运行你的应用程序并检查结果:

    9cdb3e730141a0b0f0a5c902cccdbf6e.png

    你应该看到这个视图,带有来自 OpenCV 方法的字符串

    ☆ END ☆

    如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

    扫描二维码添加小编↓

    883324c00785d809ba8dd3ec0846d684.jpeg

  • 相关阅读:
    高并发领域的奥秘:十年经验全公开,学习机会来了
    【面试经典150 | 算术平方根】
    Java之JS基础语法 ①(前端)
    PyTorch笔记 - Attention Is All You Need (4)
    Python API教程:API入门(上)
    安卓--多指触控
    CSS第一节
    Python:【基础语法】 deque()用法
    【JavaWeb的从0到1构建知识体系(二)】数据库基础
    3天精通nginx第二天-负载均衡upstream配置
  • 原文地址:https://blog.csdn.net/woshicver/article/details/126564673