目录
工程源自:https://github.com/zxcv1884/rv1126_rknn_blazeface
1 下载工程
首先下载工程:https://github.com/zxcv1884/rv1126_rknn_blazeface
2 编译
直接用github上工程自带的东西是编译不通过的,需要做如下修改
2.1 首先将CMakeLists.txt修改为如下的形式
cmake_minimum_required(VERSION 3.8.2)
PROJECT (PROJECT)
set(CMAKE_CXX_STANDARD 11)
add_definitions(-g -O0 -ggdb -gdwarf -funwind-tables -rdynamic)
#add_definitions(-DDEBUG -DRKAIQ) #修改1, 去掉-DRKAIQ,否则报错
#opencv, added by chenhongwei.#修改2, 添加opencv的头文件和库文件
include_directories(/data/chw/rv1126_20211012/rv1126_rknn_blazeface/include/opencv)
include_directories(/data/chw/rv1126_20211012/rv1126_rknn_blazeface/include/opencv2)
link_libraries(
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libopencv_core.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libopencv_features2d.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libopencv_flann.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libopencv_highgui.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libopencv_imgcodecs.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libopencv_imgproc.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libopencv_videoio.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libopencv_video.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libopencv_calib3d.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libpaho-mqtt3a.so"
"/data/chw/rv1126_20211012/rv1126_rknn_blazeface/lib/libpaho-mqttpp3.so"
)
#aux_source_directory(${PROJECT_SOURCE_DIR}/common COMMON_SRCS) #修改3, 不编译common文件夹的内容,否则会报错
#set(LIBS easymedia rkaiq pthread rknn_api rtsp) #修改4,去掉用不到的库。
set(LIBS rknn_api rtsp)
set(OpenCV_LIBS
opencv_core
opencv_imgcodecs
opencv_imgproc
opencv_videoio)
#rkmedia
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/include/easymedia)
include_directories(${PROJECT_SOURCE_DIR}/include/rkmedia)
# rkaiq
include_directories(${CMAKE_SYSROOT}/usr/include/rkaiq/algos)
include_directories(${CMAKE_SYSROOT}/usr/include/rkaiq/common)
include_directories(${CMAKE_SYSROOT}/usr/include/rkaiq/iq_parser)
include_directories(${CMAKE_SYSROOT}/usr/include/rkaiq/uAPI)
include_directories(${CMAKE_SYSROOT}/usr/include/rkaiq/xcore)
link_directories(${PROJECT_SOURCE_DIR}/lib
${PROJECT_SOURCE_DIR}/lib/opencv)
add_executable(blazeface main.cpp BlazeFace.cpp BlazeFace.h ${COMMON_SRCS})
target_link_libraries(blazeface ${LIBS} ${OpenCV_LIBS})
install(TARGETS blazeface DESTINATION bin)
一共做了4处修改,均在文件中做出了标注
2.2 添加opencv库文件和头文件
我是直接把之前编译的opencv库文件和头文件拷贝过来了。
2.3 编写build.sh
为了编译方便,这里编写了一个编译脚本。
#!/bin/bash
set -e
# for rk1808 aarch64
#GCC_COMPILER=${RK1808_TOOL_CHAIN}/bin/aarch64-linux-gnu
# for rk1806 armhf
# GCC_COMPILER=~/opts/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf
# for rv1109/rv1126 armhf
###GCC_COMPILER=${RV1109_TOOL_CHAIN}/bin/arm-linux-gnueabihf
GCC_COMPILER=/data/chw/rv1126_20211012/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/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}
rm -rf *
cmake .. \
-DCMAKE_C_COMPILER=${GCC_COMPILER}-gcc \
-DCMAKE_CXX_COMPILER=${GCC_COMPILER}-g++
make clean
make
#make install
cd -
mkdir -p blazeface_demo
cp ./build/blazeface ./blazeface_demo
cp models/anchors.bin ./blazeface_demo
cp models/blazeface.rknn ./blazeface_demo
cp images/hinton.jpg ./blazeface_demo
cp images/ldh.jpg ./blazeface_demo
cp ./lib/librknn_api.so ./blazeface_demo
#cp run_rk180x.sh install/rknn_face_demo/
#cp run_rv1109_rv1126.sh install/rknn_face_demo/
#p -dr lib/* install/rknn_yolov5_demo/lib
这里把可执行程序,模型文件,图片,库文件,都放到了blazeface_demo文件夹下。
3 运行
adb push rknn_face_demo/ /home
./blazeface blazeface.rknn hinton.jpg
adb pull /home/blazeface_demo/output.jpg ./
最后得到结果