嵌入式Linux人脸检测libfacedetection

人脸检测

此库依赖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 += -fPIC
 LDFLAGS += -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

总结

既然opencvlibfacedetection移植成功,那么基于opencv的更多应用都可以开发了,那之前学过的数字图像处理在嵌入式方面也可以任意发挥啦。

你可能感兴趣的:(嵌入式Linux,人脸检测)