在Deepin/Ubuntu上从源码编译SeetaFace6人脸识别库:避开Windows的坑,一次搞定OpenCV和QT

张开发
2026/4/16 21:44:53 15 分钟阅读

分享文章

在Deepin/Ubuntu上从源码编译SeetaFace6人脸识别库:避开Windows的坑,一次搞定OpenCV和QT
在Deepin/Ubuntu上从源码编译SeetaFace6人脸识别库避开Windows的坑一次搞定OpenCV和QT最近在做人脸识别项目时SeetaFace6这个开源库引起了我的注意。作为一个基于C编写且可商用的人脸识别解决方案它本应是开发者的理想选择。但当我尝试在Windows上编译时却被各种VS版本冲突折磨得几乎放弃——直到将战场转移到Linux才真正体会到什么叫丝滑编译。如果你也受够了Windows下的编译噩梦不妨跟着这篇指南在Deepin或Ubuntu上重新开始。我们将从环境准备开始一步步解决OpenCV编译、QT安装配置等关键问题最终完成SeetaFace6三大基础模块的编译。整个过程不需要与复杂的VS环境周旋只需要基本的Linux操作知识和一点点耐心。1. 环境准备打造完美的Linux编译环境选择Deepin或Ubuntu 20.04作为编译平台是个明智的决定。这两个发行版对开发者友好软件源丰富能大大降低环境配置的复杂度。我的测试环境是Deepin 20.7但Ubuntu 18.04及以上版本同样适用。首先更新系统并安装基础编译工具sudo apt update sudo apt upgrade -y sudo apt install -y build-essential cmake git接下来安装特定版本的GCC和GSeetaFace6推荐使用较新版本的编译器sudo apt install -y gcc-9 g-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 sudo update-alternatives --install /usr/bin/g g /usr/bin/g-9 90验证编译器版本gcc --version g --version提示如果遇到依赖问题可以尝试sudo apt --fix-broken install修复。2. OpenCV编译构建视觉处理基石SeetaFace6虽然号称只依赖OpenCV但这个唯一依赖却可能成为第一个绊脚石。我们需要编译一个功能完整的OpenCV版本建议选择4.5.x系列。首先安装OpenCV的依赖项sudo apt install -y libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev \ libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev \ libdc1394-22-dev libv4l-dev下载并编译OpenCV这里以4.5.5为例wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip unzip opencv.zip cd opencv-4.5.5 mkdir build cd build cmake -D CMAKE_BUILD_TYPERELEASE -D CMAKE_INSTALL_PREFIX/usr/local .. make -j$(nproc) sudo make install配置环境变量echo /usr/local/lib | sudo tee /etc/ld.so.conf.d/opencv.conf sudo ldconfig验证安装pkg-config --modversion opencv43. QT5.14.2安装GUI开发的必备工具虽然SeetaFace6核心功能不依赖QT但如果你想运行官方提供的示例程序QT环境就必不可少。这里我们选择5.14.2版本它在稳定性和兼容性方面表现良好。安装QT依赖sudo apt install -y libxcb-xinerama0-dev libxkbcommon-dev libxkbcommon-x11-dev \ libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-render-util0-dev下载QT在线安装器wget https://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run chmod x qt-unified-linux-x64-online.run ./qt-unified-linux-x64-online.run安装时选择QT 5.14.2QT ChartsQT Quick Controls 2QT WebEngine配置环境变量echo export PATH$PATH:/opt/Qt/5.14.2/gcc_64/bin ~/.bashrc source ~/.bashrc验证安装qmake --version4. SeetaFace6源码获取与基础模块编译终于来到主角环节。SeetaFace6采用模块化设计其中三个基础模块需要优先编译OpenRoleZoo常用操作集合、SeetaAuthorize模型解析和TenniS前向计算框架。获取源码推荐使用gitee镜像加速下载git clone https://gitee.com/mirrors/SeetaFace6Open.git ~/SeetaFace6 cd ~/SeetaFace64.1 OpenRoleZoo编译cd OpenRoleZoo/craft ./build.linux.x64.sh编译完成后检查~/SeetaFace6/build目录下是否生成了对应的库文件。4.2 SeetaAuthorize编译cd ~/SeetaFace6/SeetaAuthorize/craft ./build.linux.x64.sh4.3 TenniS编译支持GPU加速cd ~/SeetaFace6/TenniS/craft ./build.linux.x64.sh注意如果需要GPU支持确保已安装CUDA和cuDNN并在编译前检查build.linux.x64.sh中的相关配置。5. 示例程序运行验证你的成果完成基础模块编译后可以尝试运行QT示例程序验证整个环境cd ~/SeetaFace6/example/qt/seetaface_demo qmake seetaface_demo.pro make ./seetaface_demo如果一切顺利你将看到一个简单的人脸识别GUI程序。首次运行时可能需要下载模型文件请确保网络连接正常。6. 常见问题与解决方案在实际编译过程中可能会遇到以下问题OpenCV找不到问题sudo ldconfig export PKG_CONFIG_PATH/usr/local/lib/pkgconfig:$PKG_CONFIG_PATHQT版本冲突sudo apt remove qt5-defaultGPU加速不工作确认CUDA版本与TenniS要求匹配检查build.linux.x64.sh中是否启用了CUDA选项内存不足导致编译失败make -j$(($(nproc)-1)) # 减少并行编译任务数7. 性能优化建议要让SeetaFace6发挥最佳性能可以考虑以下优化启用Intel MKL支持sudo apt install intel-mkl使用AVX指令集 修改build.linux.x64.sh添加编译选项-DCMAKE_CXX_FLAGS-marchnative -O3模型优化 根据实际应用场景选择合适的模型精度级别在Deepin上完整编译SeetaFace6后我最大的感受是Linux环境下的编译体验确实比Windows清爽太多。没有了繁琐的VS版本问题整个流程一气呵成。特别是当看到示例程序成功识别出第一张人脸时之前所有的折腾都变得值得了。

更多文章