西雙版納網(wǎng)站制作公司百度集團股份有限公司
人臉檢測
此庫依賴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
環(huán)境變量添加好全志的staging_dir
如果遇到找不到庫的話-l -L 也添加上
編譯opencv
make -j 8
錯誤3:
編譯完成發(fā)現(xiàn)無法調(diào)用攝像頭,原來cmake
配置完成后,videoIO
依賴的庫全是NO,開啟為YES需要依賴ffmpeg
,遂交差編譯ffmpeg
ffmpeg
代碼下載后 執(zhí)行一下configure
,如果編譯出來的so文件太大,可以考慮根據(jù)自己的需求裁剪部分功能
./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
發(fā)現(xiàn)編譯不通過,根據(jù)提示修改makefile
添加:
CFLAGS += -fPICLDFLAGS += -fPIC
執(zhí)行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文件推送到板子上,如遇到版本號不對可以建立對應(yīng)軟連接
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
總結(jié)
既然opencv
和libfacedetection
移植成功,那么基于opencv
的更多應(yīng)用都可以開發(fā)了,那之前學(xué)過的數(shù)字圖像處理在嵌入式方面也可以任意發(fā)揮啦。