欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

利用300fps检测人脸的68个特征点

程序员文章站 2024-02-26 22:07:16
...

(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
利用300fps检测人脸的68个特征点
选择升级到对应的VS版本和windows SDK版本。
2.2 配置OpenCV
利用300fps检测人脸的68个特征点
包括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);//在图片上写文字
利用300fps检测人脸的68个特征点
修改调试参数:打开工程设置(<右击>项目 -> 属性)找到 通用属性-> 调试,里面有个命令参数的输入框,输入命令参数即可。
在命令参数的输入框输入:Demo E:/1.jpg
注意添加空格
图片链接来自:http://blog.csdn.net/zmdsjtu/article/details/53454071
利用300fps检测人脸的68个特征点
运行成功。
利用300fps检测人脸的68个特征点

相关标签: 3000fps