HarmonyOS 鸿蒙Next OpenCV和MNN so库使用说明

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next OpenCV和MNN so库使用说明 OpenCV和MNN so库使用说明

2 回复

1、将MNN和Opencv的so文件(包括.407文件),放入模块下libs目录对应的版本(arm64-v8a和armeabi-v7a) entry/libs/arm64-v8a/xxx.so

2、配置模块目录下的build-profile.json5的buildOption字段,增加abiFilters字段:

"buildOption": {
    "externalNativeOptions": {
      "abiFilters": [
        "arm64-v8a"
      ]
    },
  },

3、在CMakeLists.txt所在目录,创建’thirdPart’目录,然后将MNN和opencv的头文件放入该目录(头文件在提供的压缩包的include目录里):

src/main/cpp/thirdPart/MNN/xxxx.hpp
src/main/cpp/thirdPart/opencv/opencv4/opencv2/xxxx.hpp

4、修改CMakeLists.txt文件,增加以下内容:

实际打包内容为lib中所有的so文件,当前开发测试阶段可以先放入所有的so; 后续有裁减包大小的诉求时, 根据你们使用的so库,我们会提供对应的方案

链接需要的so库至当前的模块 可引入需要的模块

‘yitusdk’ 表示 模块名称;${CMAKE_CURRENT_SOURCE_DIR}表示CMakeLists所在目录;${OHOS_ARCH}表示构建的对应版本(arm64-v8a等)

target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libMNN.so)
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libopencv_core.so)
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libopencv_imgproc.so)

引入对应的头文件 实际打包头文件不会影响包大小

target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart)

以下根据实际情况,某个库,如opencv,根据include时的错误信息,可以写多条

target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/opencv/opencv4)
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/opencv)

补充说明: 放置so文件时,注意对应的407也需要一同放入(由于windows环境的特殊)

更多关于HarmonyOS 鸿蒙Next OpenCV和MNN so库使用说明的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next OpenCV和MNN so库使用说明”,以下是专业且简洁的回答:

在HarmonyOS鸿蒙系统中使用OpenCV和MNN的so库,主要步骤包括:

  1. 库文件准备

    • 确保已下载适用于HarmonyOS的OpenCV和MNN的so库文件。
    • 将这些so库文件放置到项目的libs目录下,或指定到系统可识别的路径。
  2. 项目配置

    • 在项目的build.gradle或相应配置文件中,添加对so库文件的引用。
    • 确保在编译配置中指定了正确的ABI(如armeabi-v7a、arm64-v8a等),以匹配so库文件的架构。
  3. 代码集成

    • 在Java或Kotlin代码中,通过System.loadLibrary方法加载所需的so库。
    • 使用OpenCV和MNN提供的API进行图像处理或神经网络推理。
  4. 权限声明

    • 在AndroidManifest.xml中声明必要的权限,如读写存储权限(如果so库文件存储在外部存储中)。
  5. 运行测试

    • 在HarmonyOS设备上运行项目,验证OpenCV和MNN功能是否正常。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部