目录
文章目录
结构
包括下述三个部分:
- 本体的源码
- 第三方库源码
- 训练用文件(
FSE_Picture.7z
),包括训练用图片等 - 运行用文件(
FAP_Dll_data.7z
),包括OpenCV
动态库,训练好的数据包等
git仓库里仅包含了本体的源码和第三方库源码。训练用文件,运行用文件因为体积较大,而且更新频率较低,所以不加入git仓库管理。获取这些文件请跟项目相关人员联系。
简介
下面是解决方案中所有的VC项目、已生成好的静态库动态库及其简易说明。
OpenCV (第三方库)
计算机视觉库。库本体包括以下文件(带d
的是Debug
模式生成的,否则则是Release
模式生成的):
opencv_world320(d).lib
提供OpenCV
库各函数的签名,方便其他静态库动态库项目链接。
opencv_world320(d).dll
若要使用OpenCV
的程序可运行,则文件路径下还需要有该文件以调用。该文件因体积过大暂不加入git仓库管理范围内。
宏$(OpenCVIncludePath)
指定库头文件路径,宏$(OpenCVLibraryPath)
指定静态库opencv_world320(d).lib
的路径。
AForge (第三方动态库)
基于.NET
用C#
开发的开源图像处理类库。
注:FacialAttractivenessPrediction
目前只使用其利用了摄像头的部分。
dlib (第三方)
一个包含机器学习算法的C++
开源第三方工具包。生成后得到一个dlib.lib
静态库文件。静态库的头文件目录由宏$(dlibThirdpartyIncludePath)
指定。
stasm (第三方)
一个人脸检测开源库。生成后得到一个stasm.lib
静态库文件。静态库的头文件路径由宏$(StasmThirdpartyIncludePath)
指定。
FaceScoreEvalLib
存放了这个项目的核心代码。生成后得到一个FaceScoreEval.lib
静态库文件。静态库的头文件路径由宏$(FaceScoreEvalLibIncludePath)
指定。
FaceScoreEvalDll
提供几个方便快速使用核心代码的函数。主要函数使用__declspec(dllexport)
修饰以方便外部调用。生成后得到一个FaceScoreEvalDll.dll
动态库文件。
FaceScoreEvalTest
TODO: 待补充
FacialAttractivenessPrediction
实例一个图形化界面,提供一个简单结合使用摄像头和FaceScoreEvalDll
的Demo
。项目生成FacialAttractivenessPrediction.exe
程序。
生成
下面是项目的解决方案中所有的VC项目,同时展示了这些项目间的依赖关系。
dlib
: 无依赖stasm
: 无依赖FaceScoreEvalLib
:dlib
stasm
OpenCV
静态库文件FaceScoreEvalDll
:dlib
stasm
FaceScoreEvalLib
OpenCV
静态库文件FaceScoreEvalTest
:dlib
stasm
FaceScoreEvalLib
OpenCV
静态库文件FacialAttractivenessPrediction
:FaceScoreEvalDll
OpenCV
动态库文件AForge
动态库文件
一些项目在生成上并不需要完全依赖其在逻辑上实际依赖的项目,下面是这些项目在生成上的依赖关系。生成上无依赖的项目可以并行生成。
dlib
: 无依赖stasm
: 无依赖FaceScoreEvalLib
: 无依赖FaceScoreEvalDll
:dlib
stasm
FaceScoreEvalLib
FaceScoreEvalTest
:dlib
stasm
FaceScoreEvalLib
FacialAttractivenessPrediction
: 无依赖
下面列出了所有的属性文件及其定义的宏,设置的属性等。
Projects\Global.props
定义宏:
ProjectDefaultPath: 指定所有VC项目的默认存放位置
ThirdpartyPath: 指定所有第三方项目,库文件的默认存放位置
dlibProjectPath: 指定dlib项目的位置
StasmProjectPath: 指定stasm项目的位置
OpenCVIncludePath: 指定链接OpenCV静态库时需要的头文件的位置
OpenCVLibraryPath: 指定链接OpenCV静态库时的静态库的位置
FaceScoreEvalLibIncludePath: 指定使用核心库函数需要的头文件的位置
设置生成位置:
目标文件位置为: Programs\build.$(Platform).$(Configuration)\
中间文件位置为: Programs\build.$(Platform).$(Configuration)\$(ProjectName).dir\
$(dlibProjectPath)\dlib.props
定义宏:
dlibSourcePath: 指定dlib的源码的路径
dlibThirdpartyIncludePath: 指定链接目标文件时需要使用的头文件的路径
忽略警告:
4819(Unicode文字在代码页936中会丢失信息)
$(StasmProjectPath)\Stasm.props
定义宏:
StasmSourcePath: 指定Stasm源码路径
StasmIncludePath: 指定Stams内部头文件路径
StasmThirdpartyIncludePath: 指定链接目标文件时需要使用的头文件的路径
注: 由于属性表常常随着项目更新而更新,因而以上内容极易因疏忽而过期,因此以上内容仅供参考。
使用
Demo
FacialAttractivenessPrediction
运行需要动态库及一些运行用的文件,如下:
├── FacialAttractivenessPrediction.exe --程序入口
├── AForge.Controls.dll
├── AForge.Imaging.dll
├── AForge.Math.dll
├── AForge.Video.DirectShow.dll
├── AForge.Video.dll
├── AForge.dll
├── FaceScoreEvalDll.dll --FaceScoreEvalDll生成的动态库
├── data --训练好的数据
│ ├── 1875186294946684049.jpg
│ ├── 71JHP3$0~PKKPX7K1)42XYT.jpg
│ ├── haarcascade_frontalface_alt2.xml
│ ├── haarcascade_mcs_lefteye.xml
│ ├── haarcascade_mcs_righteye.xml
│ ├── shape_predictor_68_face_landmarks.dat
│ └── testface.jpg
├── opencv_world320.dll --OpenCV动态库依赖 Release模式
└── opencv_world320d.dll --OpenCV动态库依赖 Debug模式
运行还需要电脑配备有摄像头,若无摄像头则程序运行会抛出数组溢出异常。
在自己的项目中
TODO: 待补充