用到的工具和代码:
facealignment源代码
opencv版本:2.4.10
1.解压facealignment-3000源程序压缩包到E:\fps3000,并在该目录下新建文build文件夹。
2.打开cmake(3.5.0),修改目录后直接configure,提示错误,所以添加OpenCV目录
OpenCV目录在系统环境变量中找到为:E:\myprogram\opencv\build,再删除程序build下的cmake相关文件,重新configure
成功,再generate,完成后在build下生成了sln文件,用vs2013打开该工程
3.添加seetaface具体步骤参考http://blog.csdn.net/shakevincent/article/details/52673533
先按照该步骤编译,分别debug和release两种模式下编译,编译完后有以下四点:
在fps3000中添加seetaface的include目录把.h包含进来,再把dll拷入对应debug和release下,fps3000预编译中添加“SEETA_EXPORTS”,最后添加lib文件。
注意要把model文件夹拷贝到release目录下,不然运行release下exe会中断
另外:这里需要修改model名称,即程序中的saved_file_name变量
4.添加icplib
这一项差点被虐哭了,再次泪目三秒~~~
先下载icplib,地址http://www.cvlibs.net/software/libicp/
按照下载下来的文件里面的READEME.TXT步骤编译之后生成的是exe文件,遂作以下尝试
1.直接把cpp,h文件拷贝出来,不经过cmake,尝试自己新建一个工程编译——编译不通过,卒
2.百度如何在solution里添加现有项目,喜,遂直接在VS界面solution里add-existing project,无论怎么修改总是有链接错误,卒
3.百度又百度,尝试编译成lib和dll的方式……成功了
注意事项和步骤如下:
a.解压刚下载下来的libicp后,参考seetaface的cmake文件,修改lipicp里自带的cmake文件
b.将.h文件中的类声明时加上_declspec(dllexport),否则不生成lib,只有dll,参考http://blog.csdn.net/ooyyee11/article/details/6894436
c.编译生成lib,dll,参考seetaface的方法导入fps3000中可以使用
d.但是matrix.h中定义的FLOAT与fps3000调用的文件有冲突,遂将matrix中FLOAT声明放入名空间ICP中,相关调用也改为ICP::FLOAT
以上
需要学习的东西:cmake文件的编写基本语法和dll,lib文件的原理和生成方法(这里花费的一天时间主要是不懂cmake的原理,所以还是很值得一看的)