如意BOOK甲辰版OpenHarmony应用开发(OpenCV调用)

代码说明

本博客中的图片无法展示,有需要着可以前往gitee仓库查看附有图片的文档。
文档说明:https://gitee.com/peeanut/opencv_oh_docs

OpenCV代码仓库:https://gitee.com/peeanut/third_party_opencv

NAPI后端代码仓库:https://gitee.com/peeanut/mysubsys

OpenHarmony应用前端代码仓库:https://gitee.com/peeanut/hellonapi

环境搭建

1 前端环境

1-1 RVBook烧录OpenHarmony

在RVBook上烧录OpenHarmony操作系统的过程参考老师发的文档“如意RISC-V硬件平台用户操作指南 for OpenHarmony”。

recovery按键不太好找,按下去时,会发出“咔嗒”的声音。

1-2 Windows安装DevEco Studio

DevEco Studio的版本需要和OpenHarmony版本相匹配。

下载链接

1-3 Windows连接RVBook

  1. 打开Windows移动热点,RVBook连接该热点。
  2. 在Windows中以管理员身份运行命令提示符,并进入OpenHarmony的Sdk11的工具链目录下(D:\ohenv\tools\OpenHarmony\Sdk\11\toolchains)。
  3. 运行 ./hdc.exe tconn 192.168.137.8:55555,以连接RVBook(ip需自行设定)。
  4. 运行 ./hdc.exe -t 192.168.233.199:55555 shell,以进入RVBook的shell。

2 后端环境

2-1 部署OpenHarmony RISC-V源码和编译环境

过程参考老师发的文档“OpenHarmony RISC-V源码+编译环境快速部署”。

要求磁盘空间至少140G。

2-2 编译结果烧录至RVBook

  1. 更改RVBook文件权限:./hdc.exe shell mount -o rw,remount /
  2. 烧录:./hdc.exe file send 本地文件 目标路径

复现流程

1 编译并部署可在RVBook OpenHarmony平台上运行的OpenCV

进入三仓库路径,并下载已适配好的OpenCV。

cd /home/oh_rv/third_party
git clone https://gitee.com/peeanut/third_party_opencv.git
mv third_party_opencv opencv
cd ..

1-1 将OpenCV加入编译过程

1-1-1 build/compile_standard_whitelist.json

在"deps_added_external_part_module"和"third_deps_bundle_not_add"两个json数组中分别增加以下条目:

"//third_party/opencv/3rdparty/ade:opencv_ade_source",
"//third_party/opencv/3rdparty/carotene:opencv_carotene_source",
"//third_party/opencv/3rdparty/carotene:libtegra_hal",
"//third_party/opencv/3rdparty/ffmpeg/libavcodec:opencv_ffmpeg_avcodec",
"//third_party/opencv/3rdparty/ffmpeg/libavcodec:libopencv_avcodec",
"//third_party/opencv/3rdparty/ffmpeg/libavdevice:opencv_ffmpeg_avdevice",
"//third_party/opencv/3rdparty/ffmpeg/libavdevice:libopencv_avdevice",
"//third_party/opencv/3rdparty/ffmpeg/libavfilter:opencv_ffmpeg_avfilter",
"//third_party/opencv/3rdparty/ffmpeg/libavfilter:libopencv_avfilter",
"//third_party/opencv/3rdparty/ffmpeg/libavformat:opencv_ffmpeg_avformat",
"//third_party/opencv/3rdparty/ffmpeg/libavformat:libopencv_avformat",
"//third_party/opencv/3rdparty/ffmpeg/libswresample:opencv_ffmpeg_swresample",
"//third_party/opencv/3rdparty/ffmpeg/libswresample:libopencv_swresample",
"//third_party/opencv/3rdparty/ffmpeg/libswscale:opencv_ffmpeg_swscale",
"//third_party/opencv/3rdparty/ffmpeg/libswscale:libopencv_swscale",
"//third_party/opencv/3rdparty/ffmpeg/libavutil:opencv_ffmpeg_avutil",
"//third_party/opencv/3rdparty/ffmpeg/libavutil:libopencv_avutil",
"//third_party/opencv/3rdparty/libpng:opencv_libpng_source",
"//third_party/opencv/3rdparty/libpng:libopencv_png",
"//third_party/opencv/3rdparty/libtiff:opencv_libtiff_source",
"//third_party/opencv/3rdparty/libtiff:libopencv_tiff",
"//third_party/opencv/3rdparty/openjpeg:opencv_openjpeg_source",
"//third_party/opencv/3rdparty/openjpeg:libopencv_openjpeg",
"//third_party/opencv/3rdparty/libjpeg-turbo::opencv_libjpeg-turbo_source",
"//third_party/opencv/3rdparty/libjpeg-turbo:libjpeg-turbo",
"//third_party/opencv/3rdparty/zlib:libopencv_zlib",
"//third_party/opencv/3rdparty/zlib:opencv_zlib_source",
"//third_party/opencv/3rdparty/libwebp:libopencv_webp",
"//third_party/opencv/3rdparty/libwebp:opencv_libwebp_source",
"//third_party/opencv/3rdparty/ittnotify:opencv_ittnotify_source",
"//third_party/opencv/3rdparty/ittnotify:libopencv_ittnotify",
"//third_party/opencv/3rdparty/quirc:opencv_quirc_source",
"//third_party/opencv/3rdparty/quirc:libopencv_quirc",
"//third_party/opencv/modules/calib3d:opencv_calib3d_source",
"//third_party/opencv/3rdparty/protobuf:opencv_protobuf_source",
"//third_party/opencv/3rdparty/protobuf:libopencv_protobuf",
"//third_party/opencv/modules/calib3d:libopencv_calib3d",
"//third_party/opencv/modules/core:opencv_core_source",
"//third_party/opencv/modules/core:libopencv_core",
"//third_party/opencv/modules/dnn:opencv_dnn_source",
"//third_party/opencv/modules/dnn:libopencv_dnn",
"//third_party/opencv/modules/features2d:opencv_features2d_source",
"//third_party/opencv/modules/features2d:libopencv_features2d",
"//third_party/opencv/modules/flann:opencv_flann_source",
"//third_party/opencv/modules/flann:libopencv_flann",
"//third_party/opencv/modules/gapi:opencv_gapi_source",
"//third_party/opencv/modules/gapi:libopencv_gapi",
"//third_party/opencv/modules/highgui:opencv_highgui_source",
"//third_party/opencv/modules/highgui:libopencv_highgui",
"//third_party/opencv/modules/imgcodecs:opencv_imgcodecs_source",
"//third_party/opencv/modules/imgcodecs:libopencv_imgcodecs",
"//third_party/opencv/modules/imgproc:opencv_imgproc_source",
"//third_party/opencv/modules/imgproc:libopencv_imgproc",
"//third_party/opencv/modules/ml:opencv_ml_source",
"//third_party/opencv/modules/ml:libopencv_ml",
"//third_party/opencv/modules/objdetect:opencv_objdetect_source",
"//third_party/opencv/modules/objdetect:libopencv_objdetect",
"//third_party/opencv/modules/photo:opencv_photo_source",
"//third_party/opencv/modules/photo:libopencv_photo",
"//third_party/opencv/modules/stitching:opencv_stitching_source",
"//third_party/opencv/modules/stitching:libopencv_stitching",
"//third_party/opencv/modules/ts:opencv_ts_source",
"//third_party/opencv/modules/ts:libopencv_ts",
"//third_party/opencv/modules/video:opencv_video_source",
"//third_party/opencv/modules/video:libopencv_video",
"//third_party/opencv/modules/videoio:opencv_videoio_source",
"//third_party/opencv/modules/videoio:libopencv_videoio",
"//third_party/opencv/napi:opencv_napi"
1-1-2 productdefine/common/inherit/default.json

在thirdparty子系统下新增组件opencv:

{
  "component": "opencv",
  "features": []
}
1-1-3 vendor/iscas/rvbook/config.json

在thirdparty子系统下新增组件opencv:

{
  "component": "opencv",
  "features": []
}

1-2 编译

在/home/oh_rv/下运行命令 ./build.sh --product-name rvbook --no-prebuilt-sdk --ccache进行编译。

1-3 查看结果

其中bin路径下为可执行文件,lib64路径下为库文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1-4 烧录至RVBook

可执行测试文件可烧录至任一路径下,库文件需烧录至/system/lib64/module下。

1-5 test验证

下图是在RVBook上运行opencv_test_core和opencv_test_imgproc的结果。报错的test是因为没有在本地下载测试需要的文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗马尼亚硬拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值