下载
git clone --recursive https://github.com/SeetaFace6Open/index.git
环境准备
我的环境如下:
-
Visual Studio 2015
对应的版本是:C:/Program Files (x86)/Microsoft Visual Studio 14.0
需要相应的路径:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin -
Windows Kits 8.1
用到 rc.exe,需要加上路径:
C:\Program Files (x86)\Windows Kits\8.1\bin\x64 -
Qt 5.15
要用到jom.exe,需要加上路径:
D:\Qt\Qt5.15.2\Tools\QtCreator\bin
D:\Qt\Qt5.15.2\msvc2015_64\bin -
MinGW64
cmake3.8.2,需要加上路径:
C:\mingw64\bin
C:\MinGW64\cmake-3.8.2-win64-x64\bin
编译
- 先编译三个基础库,进入每个目录的craft下,选择需要的平台执行即可,如:
cd index\OpenRoleZoo\craft
build.win.vc14.x64.cmd
按照以下顺序进行:
- Openrolezoo
- SeetaAuthorize
- TenniS
- FaceBoxes
- FaceRecognizer6
- 问题:
编译 FaceBoxes 报找不到库文件,修改 build/cmake/FindTenniS.cmake
增加 :set(TenniS_ROOT_DIR “${CMAKE_CURRENT_LIST_DIR}/…/…/TenniS”)
在
find_library(TenniS_LIBRARY_DEBUG
NAMES
${TenniS_NAME}${TenniS_VERSION}
后面加上“d”:
find_library(TenniS_LIBRARY_DEBUG
NAMES
${TenniS_NAME}${TenniS_VERSION}d
- 问题:
QualityAssessor3 库编译不成功,查看编译信息,发现是:
index\QualityAssessor3\QualityAssessor\src\seeta\plugin\QualityOfPose.cpp
中的170行左右的:
int quality_roll = quality_level(roll_dist, data.roll0, data.roll1);
int quality_yaw = quality_level(yaw_dist, data.yaw0, data.yaw1);
报错,不认roll0和yaw0这两个成员变量,真是奇怪!经查询,是中文注释引起的!!!参见windows上Qt中遇到关于C2039:XXX不是XXX的成员的奇怪报错
在变量定义的地方:
// 定义眼中心和嘴中心连线,为眼口线
// using two eyes calculate angle
// 表示人头偏离垂直向上方向的角度,通过与双眼角度垂直获取
float roll0 = 1 / 6.;
float roll1 = 1 / 3.;
// using distance of nose top to face line
// 表示鼻尖点,到眼口线的距离,单位:倍眼距
float yaw0 = 0.2;
float yaw1 = 0.5;
// use scale of projection point on face line to center of eyes
// 表示鼻尖点投影在眼口线上的点,偏离正常投影点的距离,单位:倍眼口线长度
float pitch0 = 0.2;
float pitch1 = 0.5;
// 鼻尖点正常投影在眼口线上的点到眼中心的距离,单位:倍眼口线长度
float nose_center = 0.5;
都多加一空行,编译通过!!!
- 问题:
在 QualityAssessor3\QualityAssessor\src\seeta\plugin 中的 QualityOfPoseEx.cpp 和 QualityOfPoseEx.h 中,
下面这个函数的定义和实现都有问题,编译不能通过。
SEETA_API bool check(
const SeetaImageData &image,
const SeetaRect &face,
const SeetaPointF *points,
const int32_t N,
float &yaw,
float &pitch,
float &roll);
注释掉这个函数,可编译通过!