毫秒级opencv的人脸特征点的检测

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Mono_1032290547/article/details/78912370
这里用到了大名鼎鼎于仕琪老师的开源库,下面附上于老师的项目下载链接

https://github.com/ShiqiYu/libfacedetection

然后就是环境的配置,具体见链接

http://blog.csdn.net/mono_1032290547/article/details/78912548


#include <opencv.hpp>
#include <facedetect-dll.h>
using namespace cv;
using namespace std;
 
//定义缓冲区大小。不要改变尺寸!
#define DETECT_BUFFER_SIZE 0x20000
 
int main()
{
    int * pResults = NULL;
    //在检测函数中使用了pBuffer。
    //如果你调用多个线程中的函数,请为每个线程创建一个缓冲区!
    unsigned char * pBuffer = (unsigned char *)malloc(DETECT_BUFFER_SIZE);
    if (!pBuffer)
    {
        fprintf(stderr, "Can not alloc buffer.\n");
        return -1;
    }
    Mat src = imread("keliamoniz1.jpg");
    Mat gray;
    cvtColor(src, gray, CV_BGR2GRAY);
    int doLandmark = 1;// do landmark detection
    pResults = facedetect_multiview_reinforce(pBuffer, (unsigned char*)(gray.ptr(0)), gray.cols, gray.rows, (int)gray.step,
        1.2f, 2, 48, 0, doLandmark);
    //打印检测结果
    for (int i = 0; i < (pResults ? *pResults : 0); i++)
    {
        short * p = ((short*)(pResults + 1)) + 142 * i;
        rectangle(src, Rect(p[0], p[1], p[2], p[3]), Scalar(0, 255, 0), 2);
        if (doLandmark)
        {
            for (int j = 0; j < 68; j++)
                circle(src, Point((int)p[6 + 2 * j], (int)p[6 + 2 * j + 1]), 1, Scalar(0, 0, 255),2);
        }
    }
    imshow("Show", src);
    waitKey(0);
}
毫秒级,速度比借助dlib快非常多

效果图

--------------------- 
版权声明:本文为CSDN博主「Mono_玉鹏」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Mono_1032290547/article/details/78912370

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值