利用300fps检测人脸的68个特征点
(1)3000fps总体上采用了随机森林和全局线性回归相结合的方法,具体可以阅读原文或者这篇博客
.从github上获取3000fps的源码,我是从这里git clone下来的,当然也可以直接download
/*****************************************************************/
运行环境
系统:windows 10
VS版本:VS2017
windows SDK:8.1
OpenCV version : 3.4.1
/******************************************************************/
(2)配置
下载下来之后,如果是进行测试的话,还需要下载对应的model,点击下载。
2.1 解压到某个文件夹,打开FaceAlignment.sln
选择升级到对应的VS版本和windows SDK版本。
2.2 配置OpenCV
包括VC++目录的包含目录和库目录。还有链接器中的输入,添加依赖项。
我的库依赖项是我编译OpenCV 3. 4.1之后的所有lib文件,单纯是为了方便,直接全部添加。以下是我的lib文件名,自己mark一下。
opencv_aruco341.lib
opencv_bgsegm341.lib
opencv_bioinspired341.lib
opencv_calib3d341.lib
opencv_ccalib341.lib
opencv_core341.lib
opencv_datasets341.lib
opencv_dnn341.lib
opencv_dnn_objdetect341.lib
opencv_dpm341.lib
opencv_face341.lib
opencv_features2d341.lib
opencv_flann341.lib
opencv_fuzzy341.lib
opencv_hfs341.lib
opencv_highgui341.lib
opencv_imgcodecs341.lib
opencv_imgproc341.lib
opencv_img_hash341.lib
opencv_line_descriptor341.lib
opencv_ml341.lib
opencv_objdetect341.lib
opencv_optflow341.lib
opencv_phase_unwrapping341.lib
opencv_photo341.lib
opencv_plot341.lib
opencv_reg341.lib
opencv_rgbd341.lib
opencv_saliency341.lib
opencv_shape341.lib
opencv_stereo341.lib
opencv_stitching341.lib
opencv_structured_light341.lib
opencv_superres341.lib
opencv_surface_matching341.lib
opencv_text341.lib
opencv_tracking341.lib
opencv_video341.lib
opencv_videoio341.lib
opencv_videostab341.lib
opencv_xfeatures2d341.lib
opencv_ximgproc341.lib
opencv_xobjdetect341.lib
opencv_xphoto341.lib
2.3配置完之后可以直接运行,但是发现只是闪现一个框,没有报错。这说明,你已经配置完成了。
阅读LBF.cpp源码。尤其是下面这段。
initialize parameters*/
if (argc > 1 && strcmp(argv[1],"TrainModel")==0){
InitializeGlobalParam();
}
else {
ReadGlobalParamFromFile(modelPath+"LBF.model");
}
// main process
if (argc==1){
PrintHelp();
}
else if(strcmp(argv[1],"TrainModel")==0){
vector<string> trainDataName;
// you need to modify this section according to your training dataset
trainDataName.push_back("afw");
trainDataName.push_back("helen");
trainDataName.push_back("lfpw");
TrainModel(trainDataName);
}
else if (strcmp(argv[1], "TestModel")==0){
vector<string> testDataName;
// you need to modify this section according to your training dataset
testDataName.push_back("test");
// testDataName.push_back("helen");
double MRSE = TestModel(testDataName);
}
else if (strcmp(argv[1], "demo")==0){
if (argc == 2){
return FaceDetectionAndAlignment("");
}
else if(argc ==3){
return FaceDetectionAndAlignment(argv[2]);
}
}
阅读之后发现是在命令行输入,作为参数,判断你是使用哪种功能,训练模型,测试模型,还是只是测试一张图片。
先进行测试单张图片。
修改对应的路径。添加 FaceDectect.cpp中人脸特征点打点之后,方便显示特征点的顺序。
putText(img, std::to_string(i), pp, FONT_HERSHEY_SIMPLEX, 1, Scalar(0, 0, 255),1, 4);//在图片上写文字
修改调试参数:打开工程设置(<右击>项目 -> 属性)找到 通用属性-> 调试,里面有个命令参数的输入框,输入命令参数即可。
在命令参数的输入框输入:Demo E:/1.jpg
注意添加空格
图片链接来自:http://blog.csdn.net/zmdsjtu/article/details/53454071
运行成功。