seetaface6依赖于opencv,另外我们需要界面,所以也需要Qt(你也可以选择其他的)。

这里的目标是配置好环境,能够编译并运行seetaface6给的demo。

那个demo中用到了sqlite数据库,所以我们还需要安装sqlite。

总的来说就是以下步骤:

  1. 编译并安装OpenCV
  2. 编译并安装seetaface6
  3. 安装Qt
  4. 安装sqlite和sqlite开发包
  5. 编译运行seetaface_demo

一、安装OpenCV

安装依赖:

apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev

如果不安装这些依赖,可能会出现例如无法识别jpg图片、无法打开mp4文件等问题,而且要在编译前安装好。

这里用官网给的步骤即可,目前最新的是opencv4.7,由于需要人脸识别,所以我们需要安装opencv_contrib模块。
https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html

# Install minimal prerequisites (Ubuntu 18.04 as reference)
sudo apt update && sudo apt install -y cmake g++ wget unzip
# Download and unpack sources
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.x.zip
unzip opencv.zip
unzip opencv_contrib.zip
# Create build directory and switch into it
mkdir -p build && cd build
# Configure
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.x/modules ../opencv-4.x
# Build
cmake --build .

注意,默认安装路径是/usr/local

  • 头文件在/usr/local/include/opencv4
  • 链接库在/usr/local/lib
  • cmake文件在/usr/local/cmake

我们知道这三个就够了。可以用-D CMAKE_INSTALL_PREFIX=来指定安装路径。
这里假定为默认路径/usr/local

如果你不想自己编译,可以用我打包好的:
https://github.com/sixsixQAQ/opencv4-dev

$dpkg --info opencv4-dev.deb新格式的 Debian 软件包,格式版本 2.0。大小 16311436 字节:主控包=380 字节。265 字节,    9 行      control              Package: opencv4-devVersion: 1.0Architecture: amd64Maintainer: sixqaq@outlook.comDescription: OpenCV4 development package with opencv-contrib module.binary:         /usr/local/binincludes:       /usr/local/include/opencv4lib:            /usr/local/libshare:          /usr/local/share

二、编译安装seetaface6

1. 去github找到seetafce6,这个只是个是demo,我们先不管它

2. 根据提示,seetaface6源码在SeetaFace6Open

3. 根据提示下载

git clone --recursive https://github.com/SeetaFace6Open/index.git

4. 编译

然后会有一个index文件夹,我们需要挨个模块编译:按个进入它们的craft文件夹,运行build.linux.x64.sh
但是编译有顺序要求,否则有的会无法编译通过
这里给个编译脚本:

#!/bin/bashmodules="OpenRoleZoo
SeetaAuthorize
TenniS
FaceBoxes
FaceRecognizer6
FaceTracker6
Landmarker
PoseEstimator6
QualityAssessor3
SeetaAgePredictor
SeetaEyeStateDetector
SeetaGenderPredictor
SeetaMaskDetector
FaceAntiSpoofingX6"for dir in $modules
docd $dir/craftbash build.linux.x64.shcd -
done

编译得到的东西在index/build,里面有头文件、链接库、.cmake文件,是我们开发和编译demo需要的。

5.配置路径/安装

你需要将编译出的文件配置到位,放到/usr/lib、/usr/incldue等位置(这样弊端是卸载不方便),或者在你的项目构建文件中填写头文件路径、链接库路径(弊端是比较繁琐,不方便迁移),否则会找不到文件。

我的做法是把它打包成.deb(推荐),方便安装和卸载:https://github.com/sixsixQAQ/seetaface6-dev

$dpkg --info seetaface6-dev.deb新格式的 Debian 软件包,格式版本 2.0。大小 5529512 字节:主控包=360 字节。226 字节,    9 行      control              Package: seetaface6-devVersion: 1.0Architecture: amd64Maintainer: sixqaq@outlook.comDescription: seetaface6 development package.binary:         /usr/binheaders:        /usr/includelib:            /usr/lib/seetaface6cmake:          /usr/lib/cmake

你也可以自己打包,很简单,教程参见:如何制作deb包

三、安装Qt5

由于demo用的是qt5,所以要安装qt5。
安装:略。
建议:完美解决QT在线安装太慢

四、配置sqlite

apt install sqlite3 libsqlite3-dev

这里sqlite3是命令行工具,-dev的是开发包,我们两个都需要。

五、编译运行seetaface6-demo

1.修改pro文件

删除seetaface6-demo中的.pro.user文件,然后用qt creator打开.pro文件,把Qt5勾上来重新配置项目。
这个demo用的qmake,我们需要修改那个.pro文件,这里只求在linux运行即可,所以我把windows的全删除了。
seetaface6-dev包中把seetaface6链接库安装到了/usr/lib/seetaface6,修改一下头文件路径和链接库路径即可。

#-------------------------------------------------
#
# Project created by QtCreator 2020-03-16T14:40:38
#
#-------------------------------------------------QT       += core gui sql greaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = seetaface_demo
TEMPLATE = app# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \mainwindow.cpp \videocapturethread.cpp \inputfilesprocessdialog.cpp \resetmodelprocessdialog.cppHEADERS += \mainwindow.h \videocapturethread.h \inputfilesprocessdialog.h \resetmodelprocessdialog.hforms += \mainwindow.ui#linux:
INCLUDEPATH += /usr/local/include/opencv4#OpenCV的链接库安装路径,这里是/usr/local/lib
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs
#seetaface6链接库的路径,这里是/usr/lib/seetaface6
LIBS += -L/usr/lib/seetaface6 -lSeetaFaceDetector600 -lSeetaFaceLandmarker600 \-lSeetaFaceAntiSpoofingX600 -lSeetaFaceTracking600 -lSeetaFaceRecognizer610 \-lSeetaQualityAssessor300 -lSeetaPoseEstimation600 -lSeetaAuthorize -ltennisRESOURCES += \face_resource.qrc

2.下载模型

github上有模型的链接,下载、解压,并放到你的Qt构建目录下,重命名为models,

3.运行

点击绿三角运行。

建议:没摄像头的买个摄像头。

Windows 10 下配置

由于我主力系统是Linux,所以在配置Windows时遇到一些麻烦,浅讲一下Windows。

主要讲那个怎么构建。

为了使用shell,我使用cygwin来构建(你也可以用git-bash,差不多,但是MSYS有点小麻烦,需要自己再加PATH变量)。

看这个脚本(前面Linux给出的),

#!/bin/bashmodules="OpenRoleZoo
SeetaAuthorize
TenniS
FaceBoxes
FaceRecognizer6
FaceTracker6
Landmarker
PoseEstimator6
QualityAssessor3
SeetaAgePredictor
SeetaEyeStateDetector
SeetaGenderPredictor
SeetaMaskDetector
FaceAntiSpoofingX6"for dir in $modules
docd $dir/craftbash build.linux.x64.shcd -
done

我们将其中的bash build.linux.x64.sh换成./build.win.vc14.x64.cmd,主要必须有./,不然cygwingit-bash不会将它当作windows脚本解析。

然而,仅仅说这样还不够,
我们打开一个build.wn.vc14.x64.cmd为例看一下:

@echo offset "BUILD_DIR=build.win.vc14.x64"
set "BUILD_TYPE=Release"
set "PLATFORM=x64"
set "PLATFORM_TARGET=x64"set "ORZ_HOME=%~dp0/../../build"set "INSTALL_DIR=%~dp0/../../build"call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM%cd %~dp0md "%BUILD_DIR%"cd "%BUILD_DIR%"md "%INSTALL_DIR%"cmake "%~dp0.." ^
-G"NMake Makefiles JOM" ^
-DCMAKE_BUILD_TYPE="%BUILD_TYPE%" ^
-DCONFIGURATION="%BUILD_TYPE%" ^
-DPLATFORM="%PLATFORM_TARGET%" ^
-DORZ_ROOT_DIR="%ORZ_HOME%" ^
-DCMAKE_INSTALL_PREFIX="%INSTALL_DIR%" ^
-DCMAKE_MODULE_PATH="" ^
-DSEETA_AUTHORIZE=OFF ^
-DSEETA_MODEL_ENCRYPT=ONjom -j16 installexit /b

注意,里面的-G"NMake Makefiles JOM"。我的情况是只安装了最新的VS2022,它里面只有NMake,没有这个叫JOM的东东。

起初尝试把-G换成去掉,或者换成NMake Makefiles,结果发现似乎没有编译的痕迹,尝试用cmake --build .,印象里好像会报错来着,而且无法用cmake --install 来安装。

心想一定有个底层的构建工具来完成它,找了半天才知道VS的构建工具是MSBuild
一次完整的构建过程:

cmake ../ -DCMAKE_INSTALL_PREFIX=../../../BUILD ...
msbuild.exe ALL_BUILD.vcxproj
msbuild.exe INSTALL.vcxproj

可以msbuild /m:8使用八线程编译,虽然听说不一定有效。

我们可以在程序菜单中打开Visual Studio的命令行终端来使用MSBuild,但是这样就不能借助强大的Linux shell,如果你不嫌弃,可以这样一个一个地改下去:

  1. 进入一个模块的craft(例如 OpenRoleZoo)
  2. 修改buildXXX.cmd中的-G"XXX",把-G那行取掉,让它自动选择Visual Studio作为Generator(如果没有,请手动指定)。
  3. jom -16 install改为msbuild.exe ALL_BUILD.vcxprojmsbuild.exe INSTALL.vcxproj

如果你想借助shell,那么这样:
在所有模块文件夹目录外执行下面的脚本来替换,由于\r\n\n的问题,替换时有些差异(注意你用的哪个替换脚本,就用哪个来构建,不要混用):
如果你使用git-bash:

for file in `find -name build.win.vc14.x64.cmd`
dosed -i ':a;N;s/-G\"NMake Makefiles JOM\" \^\n//g;ta' $filesed -i 's/jom -j16 install/msbuild.exe \/m:8 ALL_BUILD.vcxproj\nmsbuild.exe \/m:8 INSTALL.vcxproj/g' $file
done

如果你使用cygwin:

for file in `find -name build.win.vc14.x64.cmd`
dosed -i ':a;N;s/-G\"NMake Makefiles JOM\" \^\r\n//g;ta' $filesed -i 's/jom -j16 install/msbuild.exe \/m:8 ALL_BUILD.vcxproj\r\nmsbuild.exe \/m:8 INSTALL.vcxproj/g' $file
done

替换后的文件类似下面:

@echo offset "BUILD_DIR=build.win.vc14.x64"
set "BUILD_TYPE=Release"
set "PLATFORM=amd64"
set "PLATFORM_TARGET=x64"set "WITH_SSL=OFF"set "INSTALL_DIR=../../../build"call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM%cd %~dp0md "%BUILD_DIR%"cd "%BUILD_DIR%"md "%INSTALL_DIR%"cmake "%~dp0.." ^
-DCMAKE_BUILD_TYPE="%BUILD_TYPE%" ^
-DPLATFORM="%PLATFORM_TARGET%" ^
-DORZ_WITH_OPENSSL="%WITH_SSL%" ^
-DCMAKE_INSTALL_PREFIX="%INSTALL_DIR%"msbuild.exe /m:8 ALL_BUILD.vcxproj
msbuild.exe /m:8 INSTALL.vcxprojexit /b

替换完成后,在顶层执行构建脚本:
(构建之前,和Linux一样,记得在OpenRoleZoo那个文件里加上#include <functional>)

#!/bin/bashmodules="OpenRoleZoo
SeetaAuthorize
TenniS
FaceBoxes
FaceRecognizer6
FaceTracker6
Landmarker
PoseEstimator6
QualityAssessor3
SeetaAgePredictor
SeetaEyeStateDetector
SeetaGenderPredictor
SeetaMaskDetector
FaceAntiSpoofingX6"for dir in $modules
docd $dir/craft./build.win.vc14.x64.cmdcd -
done

linux(debian系列)和 Windows 10配置seetaface6相关推荐

  1. Windows 10配置CUDA 9.2

    Windows 10配置CUDA 9.2 本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可. 目录 Windows 10配置CUDA 9.2 目录 配置环境&平台 ...

  2. Windows 10配置GPU环境

    Windows 10配置GPU环境 查看显卡型号 下载安装显卡驱动 下载安装CUDA 查看本机显卡驱动版本 查看CUDA和显卡驱动的对应关系 下载安装CUDA 下载cuDNN 验证安装 验证CUDA ...

  3. Windows 10配置网络代理服务器

    Windows 10配置网络代理服务器 本文是基于Windows 10系统环境,配置网络代理服务器,Cent OS 7.3希望通过网络参数配置,可以实现通过网络代理服务器连接互联网: Windows ...

  4. Windows 10配置阿里云DNS

    Windows 10配置阿里云DNS 首先需要打开阿里云官方镜像站:https://developer.aliyun.com/mirror/找到DNS服务器地址,再进行后续操作. 1.打开Window ...

  5. Windows 10 配置Rust交叉编译Linux应用程序-musl

    应用程序开发,一般是在个人电脑开发,部署在产线服务器上.而个人电脑可能是Windows,MacOS或者Linux,而线上电脑一般是Linux系统,与个人电脑可能不一致,静态编译类型语言(C/C++,R ...

  6. win集成linux开发环境,在 Windows 10 上创建开发环境 | Microsoft Docs

    在 Windows 10 上设置开发环境Set up your development environment on Windows 10 07/24/2020 本文内容 本指南将帮助你开始安装和设置 ...

  7. linux子系统使用rstudio,Windows 10 Linux子系统 (wsl)学习手记

    微软在Windows10 1607版中提供了一个Linux子系统,用户不需要虚拟机就可以直接运行Linux命令,是一个对开发者非常方便的功能.目前服务器领域基本都是Linux的天下,但是在个人桌面领域 ...

  8. linux子系统 xfce,在windows 10 子系统linux上运行xfce4

    1. 先在开始菜单->设置中打开开发人员选项 2. 先在打开/关闭windows功能中打开linux子系统 3. 在命令行运行bash........直到安装完成 4. 修改.bashrc -& ...

  9. 记事本linux命令换行符,Windows 10版记事本应用终于支持Linux/Mac换行符 排版不再辣眼睛...

    记事本(Notepad)是微软 Windows 操作系统中相当经典的一款工具,其在最新的 Windows 10 操作系统中也得到了保留,命运比被 Photos 和 Paint 3D 取代的画图(MsP ...

最新文章

  1. 用c语言做教学课程安排,C语言入门课程安排
  2. linux 系统 权限
  3. leetcode 242. 有效的字母异位词
  4. Mac 上无法使用netstat的-p参数
  5. UI帮手|小样机大作用
  6. 线程池ThreadPoolExcutor的使用
  7. 代码文档生成工具-Doxygen生成CHM和RTF图文教程
  8. javamail 解码 base64 html格式邮件_关于JavaMail,我遇上的那些史前巨坑...(建议收藏)
  9. C++初学必练基础题【第四期】
  10. stdafx.h简介
  11. 树莓派-python之adc电压采集的实现
  12. CMMI 2.0 和 1.3
  13. 针对目前windows系统的所有勒索病毒补丁和安全工具
  14. oracle10G 异构方式迁移表空间之一
  15. NCCL (NVIDIA Collective Communications Library)
  16. Go语言实战之数组的内部实现和基础功能
  17. ESP32+PIO+LGVL+gui_guider
  18. 如何进行git ssh文件的配置
  19. 在线便携小风扇链接,带给你清凉一夏
  20. 周六见 | PyCon China 2022 上海站就等你啦!

热门文章

  1. KL15和汽车各个档位
  2. 罗永浩锤子ROM Pre-α公测版下载及刷机教程
  3. 国家开放大学-乡村社会学-形考作业2
  4. LeetCode·每日一题·811.子域名访问计数·哈希
  5. 人教版初中信息技术电子课本_人教版 九年级化学上册 高清电子课本(下载查看文末)...
  6. PMP认证在中国认可吗?
  7. OpenGL(sharpGL)支持任意相机可平移缩放的轨迹球原理描述及源码
  8. windows下添加路由解决手机连接热点跳板机连接不上问题
  9. 经验分享:如何零基础开始自学Python编程(上)
  10. 英国禁用华为的5G设备,后者撤资83亿元予以反击