引言

OpenHarmony 移植OpenCV 的相关。

一、OpenCV 移植

1、源码获取

git clone -b master git@gitee.com:openharmony-sig/third_party_opencv.git
或
git clone -b master https://gitee.com/openharmony-sig/third_party_opencv.git

opencv源码目录放置到openharmony/third_party目录下。

2、部件注册

在vendor/hihope/rk3568目录下的产品配置文件config.json中添加对应的部件,直接添加到原有部件后即可。

{
  "product_name": "rk3568",
  "device_company": "rockchip",
  "device_build_path": "device/board/hihope/rk3568",
  ...
  "subsystems": [
    ...
    {
      "subsystem": "thirdparty",
      "components": [
        {
          "component": "libuv",
          "features": [
            "use_ffrt = true"
          ]
        },
        {                                          //新增部件
          "component": "opencv",
          "features": []
        }
      ]
    }
    ...
  ]
}

3、部件配置修改

3.1、opencv模块配置bundle.json修改

3.1.1、修改opencv/bundle.json配置文件中third_party依赖
{
    "name": "@ohos/opencv",
    "description": "opencv napi interface",
    ...
    "component": {
      "name": "opencv",
      ...
      "deps": {
        "components": [
            ...
        ],
        "third_party": [
            "bounds_checking_function",    //修改此处依赖
            "libuv"                        //修改此处依赖
        ]
      },
      "build": {
        "sub_component": [
        ],
        "inner_kits": [
        ],
        "test": []
      }
    }
  }
3.1.2、build/commonmo模块配置bundle.json修改

在build/commonmo/bundle.json配置文件中新增third_party依赖

{
  "component": {
    ...
    "deps": {
      "components": [],
      "third_party": [
        "opencv"                //新增
      ]
    },
    ...
  }
}

4、部件使用

以foundation/arkui/ui_appearance部件下ui_appearance_service模块引用opencv部件下【libopencv_photo】模块为例:

  • 修改arkui/ui_appearance部件配置文件bundle.json
    ...
    "deps": {
      "components": [
        ...
      ],
      "third_party": [
        "opencv"     //新增
      ]
    }
    ...
  • 修改ui_appearance_service模块配置

foundation/arkui/ui_appearance/services/BUILD.gn

...
ohos_shared_library("ui_appearance_service") {
  ...
  deps = [
      "//third_party/opencv/modules/photo:libopencv_photo"  //新增
  ]
  external_deps = [
    ...
  ]

5、编译构建

//ui_appearance_service模块单独编译
./build.sh --build-target ui_appearance_service  
//编译成功后/out/rk3568/thirdparty/opencv目录下会有libopencv_photo模块相关的so文件
//rk3568产品编译
./build.sh --product-name rk3568
//部件编译
./build.sh --build-target opencv
//模块编译
./build.sh --build-target libopencv_photo

二、替换DevEco的开发SDK

1、从编译后的产物\out\sdk\packages\ohos-sdk中copy 出SDK

在这里插入图片描述

2、按照同样的格式解压并复制到DevEco 对应的SDK路径

在这里插入图片描述

3、在新的SDK 下的执行nmp 自动安装相关依赖库

在这里插入图片描述

  • 在\10\ets\build-tools\ets-loader 下执行 nmp i
  • 在\10\js\build-tools\ace-loader下执行 nmp i

4、保持一样的文件结构然后刷新就可以看到了

在这里插入图片描述

Done。

Logo

更多推荐