contenido
2.1 Primero modifique CMakeLists.txt al siguiente formulario
2.2 Agregar archivos de biblioteca y archivos de encabezado opencv
Fuente del proyecto: https://github.com/zxcv1884/rv1126_rknn_blazeface
1 Descarga el proyecto
Primero descarga el proyecto: https://github.com/zxcv1884/rv1126_rknn_blazeface
2 Compilar
El uso directo de las cosas que vienen con el proyecto en github no se puede compilar, y se deben realizar las siguientes modificaciones
2.1 Primero modifique CMakeLists.txt al siguiente formulario
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)
Se han realizado un total de 4 modificaciones, todas ellas marcadas en la ficha
2.2 Agregar archivos de biblioteca y archivos de encabezado opencv
Para la compilación cruzada de opencv, consulte la compilación cruzada de ubuntu de opencv_CSDN blog-CSDN blog_rv1126 para trasplantar el código fuente de opencv Opencv y descomprimirlo en Versiones: código fuente de descarga de OpenCV, uso la versión 3.4.12 aquí. 3. https://cumtchw.blog.csdn.net/article/details/120825584
Copié directamente los archivos de la biblioteca opencv y los archivos de encabezado compilados antes.
2.3 Escribiendo build.sh
Para facilitar la compilación, aquí se escribe un script de compilación.
#!/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
Aquí, los programas ejecutables, los archivos de modelo, las imágenes y los archivos de biblioteca se colocan en la carpeta blazeface_demo.
3 correr
adb push rknn_face_demo/ /home
./blazeface blazeface.rknn hinton.jpg
adb pull /home/blazeface_demo/output.jpg ./
el resultado final