带 RVV 加速的 OpenCV 库,让你的 K230 性能猛蹿!

Viewed 50

问题描述


K230 RTOS OpenCV开发指南

OpenCV (Open Source Computer Vision Library)是一个跨平台的计算机视觉库,用于开发实时的图像处理、计算机视觉以及模式识别程序。K230 RTOS SDK 提供了针对 K230 RVV 优化的升级版 OpenCV 库,相比于原始版本 OpenCV ,能实现更高的性能。
K230 RTOS SDK 中已包含预先交叉编译好的升级版 OpenCV 加速库(位于src/rtsmart/libs/opencv/路径下),用户直接使用该静态库编译自己的可执行程序即可。

一、性能对比

下面通过对比 K230 RTOS SDK 增强版 OpenCV 库与官方 OpenCV 库的算子,带大家直观感受 RVV 加速带来的性能飞跃:

测试环境
- 开发板:K230 开发板
- 系统环境:K230 RTOS SDK
- 操作系统:RTOS
- 输入图片尺寸:1280x1080

测试耗时对比

算子 官方版OpenCV (v4.5.4) K230 增强版OpenCV (xuantie v1.0.3)
inter 38.839ms 7.44669ms
media_blur 61.4257ms 6.47148ms
hist 5.67603ms 5.22174ms
warpaffine 308.94ms 32.6508ms
angle 113.614ms 17.8939ms
Canny 205.45ms 38.17ms
blur 41.27ms 3.96ms
cvtColor 89.38ms 3.88ms
dilate 13.33ms 1.95ms
erode 13.34ms 1.95ms
inter 38.79ms 7.47ms
resize 6.52ms 2.8ms

(对多数算子均有性能提升,更全面的测试数据会在后续发出)

二、运行OpenCV 示例

1、我们在SDK中提供了5个示例代码

位于 src/rtsmart/examples/opencv_examples/ 路径下。
image.png

2、编译示例程序

在 menuconfig 打开 opencv 的示例程序的编译:

# 在 K230 RTOS SDK 根目录下使用 make menuconfig 配置编译选项
make menuconfig

image.png
image.png
image.png

设置完成后,使用 make log 重新编译固件,这些示例文件将自动打包到固件中。 把固件烧录到板子里面。

3、运行示例程序

在串口输入命令:

cd sdcard/app/examples/opencv_examples/
./opencv_grayscale_binarize.elf          #灰度化和二值化示例

这个程序的主要功能是:读取一张彩色图像后,先将其转换为灰度图像并保存;接着对生成的灰度图像进行二值化处理,最终将处理后的图像保存下来。
image.png

运行后可在当前目录得到一张灰度图和二值化处理后的图,如下所示。
原图:
image.png

灰度图:
image.png

二值化处理:
image.png

RTOS 固件编译指南:
https://www.kendryte.com/k230_rtos/zh/main/userguide/how_to_build.html
RTOS SDK参考文档:
https://www.kendryte.com/k230_rtos/zh/main/app_develop_guide/3rd-party/opencv.html#
XuanTie OpenCV 用户手册 :
https://www.xrvm.cn/community/download?id=4385060250210865152
官方 OpenCV v4.5.4 文档 :
https://docs.opencv.org/4.5.4/

1 Answers

勘智微信公众号原文:https://mp.weixin.qq.com/s/SxvW2CJUDVIsd1LKlU7nDw