1.openCV sdk 使用的是 build.gradle Groovy 来配置,其实和 build.gradle.kts Kotlin DSL 是可以两者共存的,只需要同时保留settings.gradlesettings.gradle.kts。当然你如果像我一样有强迫症,后面有 我转换好的 Kotlin DSL。

2.官方的 opencv-4.10.0-android-sdk .so 文件太占地方,附带 opencv-mobile-4.10.0-android 精简版 在github上下载:opencv-mobile

 一、将项目中 settings.gradle 文件删除,settings.gradle.kts 文件中添加 include(":opencv"),将openCV sdk Module 下 build.gradle 改成  build.gradle.kts
附:build.gradle.kts
plugins {
    id("com.android.library")
}

android {
    namespace = "org.opencv"
    compileSdk = 34

    defaultConfig {
        minSdk = 26

        externalNativeBuild {
            cmake {
                arguments("-DANDROID_STL=c++_shared")
                targets("opencv_jni_shared")
            }
        }
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

    buildTypes {
        getByName("debug") {
            packaging {
                jniLibs.keepDebugSymbols.add("**/*.so")  // controlled by OpenCV CMake scripts
            }
        }
        getByName("release") {
            packaging {
                jniLibs.keepDebugSymbols.add("**/*.so")  // controlled by OpenCV CMake scripts
            }
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
        }
    }

    buildFeatures {
        buildConfig = true
    }

    sourceSets {
        getByName("main") {
            jniLibs.srcDirs("native/libs")
            java.srcDirs("java/src")
            res.srcDirs("java/res")
            manifest.srcFile("java/AndroidManifest.xml")
        }
    }

    externalNativeBuild {
        cmake {
            path("${project.projectDir}/libcxx_helper/CMakeLists.txt")
            version = "3.31.0"
        }
    }
}

二、opencv-mobile-4.10.0-android 精简版 的 配置文件:

附:CMakeLists.txt
cmake_minimum_required(VERSION 3.22.1)

project("nativelib")

# 指定.cmake文件路径
set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.10.0-android/sdk/native/jni)

# 查找.cmake文件 找到后将头文件目录设置为${OpenCV_INCLUDE_DIRS},库文件目录设为${OpenCV_LIBS}
find_package(OpenCV REQUIRED core imgproc highgui)

# 包含OpenCV头文件目录
include_directories(${OpenCV_INCLUDE_DIRS})

find_library(Graphics-lib jnigraphics)

add_library(${CMAKE_PROJECT_NAME} SHARED
        nativelib.cpp)

# 链接OpenCV库文件目录
target_link_libraries(${CMAKE_PROJECT_NAME}
        ${OpenCV_LIBS}
        ${Graphics-lib}
        android
        log)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐