代码说明
本博客中的图片无法展示,有需要着可以前往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
- 打开Windows移动热点,RVBook连接该热点。
- 在Windows中以管理员身份运行命令提示符,并进入OpenHarmony的Sdk11的工具链目录下(D:\ohenv\tools\OpenHarmony\Sdk\11\toolchains)。
- 运行
./hdc.exe tconn 192.168.137.8:55555,以连接RVBook(ip需自行设定)。 - 运行
./hdc.exe -t 192.168.233.199:55555 shell,以进入RVBook的shell。
2 后端环境
2-1 部署OpenHarmony RISC-V源码和编译环境
过程参考老师发的文档“OpenHarmony RISC-V源码+编译环境快速部署”。
要求磁盘空间至少140G。
2-2 编译结果烧录至RVBook
- 更改RVBook文件权限:
./hdc.exe shell mount -o rw,remount / - 烧录:
./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是因为没有在本地下载测试需要的文件。


最低0.47元/天 解锁文章
1415

被折叠的 条评论
为什么被折叠?



