[智能AI摄像头]rv1126搭建rknpu开发环境并添加opencv库、更新板端rknpu驱动

 测试平台:易佰纳rv1126 38板

rknn_toolkit安装

环境要求:ubutu18.04

建议使用docker镜像

安装docker

参考https://zhuanlan.zhihu.com/p/143156163

镜像地址 百度企业网盘-企业云盘-企业云存储解决方案-同步云盘

rknn_toolkit目录结构

docker load --input rknn-toolkit-1.7.3-docker.tar.gz

docker images

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb  \

-v /home/wzw/rk_npu_sdk/rknn-toolkit-master-v1.7.3:/rknn_toolkit rknn-toolkit:1.7.3 /bin/bash

至此环境搭建完成

更新NPU驱动

查看板端版本

1:查看npu驱动版本

dmesg | grep -i galcore,可以看到版本为6.4.3.5

2:查看rknn-server版本

strings /usr/bin/rknn_server | grep build

3:查看librknn_runtime版本

strings /usr/lib/librknn_runtime.so | grep version

更新驱动

驱动连接-> https://github.com/rockchip-linux/rknpu/tree/master/drivers

我这里使用的是1.7.3版本,注意板端版本要尽量与rknn sdk的版本相一致,这里有两个版本的库

 其中linux-armhf-puma是full版为95M,而linux-armhf-puma-mini是小型版本仅为5.3M,他们之间的区别是mini版不支持连板推理,且仅支持预编译的rknn模型,这里采用的是full版;

 

将linux-armhf-puma目录下的lib和bin文件 push到板端,将板端/usr/bin下的rknn_server用1.7.3的代替,并将lib下的所有库文件拷贝至/usr/lib目录下

替换完成后

sync

reboot  

查看npu驱动,rknn-server以及librknn_runtime的版本,可以看到已全部更新为1.7.3

至此还要将库重新连接一下,因为有的库需要用到其他的库文件

ln -snf libOpenCL.so.1.2 libOpenCL.so.1

ln -snf libOpenVX.so.1.2 libOpenVX.so

ln -snf libOpenVX.so.1.2 libOpenVX.so.1

sync

测试

随便找一个demo进行测试,若成功则表示npu更新完成

至此npu更新至1.7.3

连板推理

rknn_server: 是一个运行在板子上的后台代理服务,用于接收PC通过USB传输过来的协议,然后执行板端runtime对应的接口,并返回结果给PC,没有启动rknnserver会报以下错误

vi /etc/profile增加

#start rknnserver                                                                        

killall start_rknn.sh > /dev/null 2>&1                                                   

killall rknn_server > /dev/null 2>&1               

cd /etc/init.d/                                

start_rknn.sh &   

在/etc/init.d新增start_rknn.sh

#!/bin/sh

while true

do

  sleep 1

  rknn_server #>/dev/null 2>&1

done

重启即可

重新连板推理成功

NPU sdk添加opencv库

rv1126所使用的rknn sdk里默认是不带opencv库的,官方所用的例程里也没有使用opencv,但是这样在进行图像处理的时候有点麻烦了,这里有两种办法:

一是先用python将所需要的图片处理好后在转化为bin格式文件,在使用c++或c进行读取,可以参考->;

二是为其添加opencv库,可以直接在程序中调用opencv接口;下面介绍具体步骤

交叉编译opencv源码

1:首先利用rv1126的交叉编译工具,将opencv源码生成可在rv1126上运行的库,参考

-> Rv1126移植opencv-CSDN博客

2:将编译生成的install下的所有文件拷贝支/3rdparty/opencv/下

3:编辑CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)
set(PROJECT_NAME rknn_template)
project(${PROJECT_NAME})

set(CMAKE_SYSTEM_NAME Linux)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    message(STATUS "64bit")
    set(LIB_ARCH lib64)
else()
    message(STATUS "32bit")
    set(LIB_ARCH lib)
endif()

# rknn api
set(RKNN_API_PATH ${CMAKE_SOURCE_DIR}/../../librknn_api)
include_directories(${RKNN_API_PATH}/include)
set(RKNN_API_LIB ${RKNN_API_PATH}/${LIB_ARCH}/librknn_api.so)

# opencv
if(LIB_ARCH STREQUAL "lib")
    set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/opencv-3.4.3/share/OpenCV)
    message(STATUS "--------armhf")
else()
    set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/opencv-linux-aarch64/share/OpenCV)
    message(STATUS "aarch64")
endif()
find_package(OpenCV REQUIRED)

#stb
include_directories(${CMAKE_SOURCE_DIR}/../3rdparty/)

set(CMAKE_INSTALL_RPATH "lib")

add_executable(${PROJECT_NAME}
        src/main.cc
)

target_link_libraries(${PROJECT_NAME}
        ${RKNN_API_LIB}
        ${OpenCV_LIBS}
        dl
        )

# install target and libraries
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/${PROJECT_NAME})
install(TARGETS ${PROJECT_NAME} DESTINATION ./)
install(DIRECTORY model DESTINATION ./)
install(PROGRAMS ${RKNN_API_LIB} DESTINATION lib)

build.sh

#!/bin/bash


set -e


# for rv1109/rv1126 armhf

GCC_COMPILER=/opt/atk-dlrv1126-toolchain/bin/arm-linux-gnueabihf


ROOT_PWD=$( cd "$( dirname $0 )" && cd -P "$( dirname "$SOURCE" )" && pwd )


# build rockx

BUILD_DIR=${ROOT_PWD}/build


if [[ ! -d "${BUILD_DIR}" ]]; then

  mkdir -p ${BUILD_DIR}

fi


cd ${BUILD_DIR}

cmake .. \

    -DCMAKE_C_COMPILER=${GCC_COMPILER}-gcc \

    -DCMAKE_CXX_COMPILER=${GCC_COMPILER}-g++

make -j4

make install

cd -

main.cc里加入opencv库

此时有可能报错,使用ldd xxxx查看

这是因为板端没有找到相应的库,此时把缺失的库拷贝到提示缺失的路径下,再次运行即可,若依然有报错则继续添加到相应路径下即可。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

warren@伟~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值