人脸检测
此库依赖Opencv
,所以首先要移植Opencv
到板子上。
笔者使用LVGL
搭建了一个界面,界面有些卡顿(主要原因是文件存取较慢),演示效果如下:
OpenCV
首先要交叉编译Opencv
参考:https://blog.csdn.net/weixin_42794454/article/details/114405816
错误1:
修改交叉编译工具链里的文件:toolchain-sunxi-glibc/toolchain/include/features.h
添加以下一行:
#define _FILE_OFFSET_BITS 64
错误2:
参考:https://github.com/opencv/opencv/issues/16603
环境变量添加好全志的staging_dir
如果遇到找不到库的话-l -L 也添加上
编译opencv
make -j 8
错误3:
编译完成发现无法调用摄像头,原来cmake
配置完成后,videoIO
依赖的库全是NO,开启为YES需要依赖ffmpeg
,遂交差编译ffmpeg
ffmpeg
代码下载后 执行一下configure
,如果编译出来的so文件太大,可以考虑根据自己的需求裁剪部分功能
./configure --extra-ldflags="-fPIC" --enable-shared --disable-static --disable-all --disable-autodetect --disable-podpages --disable-asm --enable-avcodec --enable-avformat --enable-decoders --enable-encoders --enable-demuxers --enable-parsers --enable-protocol='file' --enable-swscale --enable-zlib --cc=/home/ql/Downloads/R16_Tina_compiler_glibc/toolchain-sunxi-glibc/toolchain/bin/arm-openwrt-linux-gnueabi-gcc --enable-cross-compile --sysroot=/home/ql/Downloads/R16_Tina_compiler_glibc/staging_dir/target --prefix=/home/ql/Downloads/ffmpeg-6.0/output --arch=arm32
发现编译不通过,根据提示修改makefile
添加:
CFLAGS += -fPICLDFLAGS += -fPIC
执行make -j8
将编译出来的so文件放入交叉编译工具链的lib
文件夹下,头文件放入inlude
文件夹下
重新编译opencv
,使用cmakeGUI
工具做好以下配置
OPENCV_ENABLE_PKG_CONFIG true
PKG_CONFIG_PATH=/home/ql/Downloads/R16_Tina_compiler_glibc/staging_dir/target/usr/lib/pkgconfig
make -j8
即可
编译lifacedetect
添加依赖:修改项目makefile/cmakeList
添加以下选项:-lavformat -lavcodec -lavutil -lswscale -lm -lz -lpthread
配置并编译:
cmake .. -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
将demo
推送到板子上,运行即可。
将以下so文件推送到板子上,如遇到版本号不对可以建立对应软连接
avformat
avcodec
avutil
swscale
opencv_core
opencv_calib3d
opencv_features2d
opencv_dnn
opencv_flann
opencv_imgcodecs
opencv_imgproc
opencv_ml
opencv_objdetect
opencv_photo
opencv_stitching
opencv_video
opencv_videoio
总结
既然opencv
和libfacedetection
移植成功,那么基于opencv
的更多应用都可以开发了,那之前学过的数字图像处理在嵌入式方面也可以任意发挥啦。