Dlib 实现人脸的68点检测

Dlib实现68点标定

效果图展示:



主要是通过68点的模型进行提取脸部的68点的特征值。(相应细节都已经注释)

//设置人脸的标记点
#include <dlib\opencv.h>
#include <opencv2\opencv.hpp>
#include <dlib\image_processing\frontal_face_detector.h>
#include <dlib\image_processing\render_face_detections.h>
#include <dlib\image_processing.h>
#include <dlib\gui_widgets.h>

//声明dlib的域
using namespace dlib;

using namespace std;

int main() {

    try {
        //首先进行获取摄像头
        cv::VideoCapture cap(0);

        if (!cap.isOpened()) {
            //如果摄像头没有开启
            cerr << "Unable to connect to camera" << endl;
            return 1;
        }
        //Load face detection and pos estimation models 加载我们需要的脸部识别和姿态估计模型
        frontal_face_detector detector = get_frontal_face_detector();
        shape_predictor pos_modle;
        //将文件中的模型放置再pos_modle中
        deserialize("shape_predictor_68_face_landmarks.dat") >> pos_modle;

        //Grab and process frames until the main window is closed by the user
        //处理当前每一帧的图片
        while (cv::waitKey(30)!=27)
        {

            //Grab a frame 获取一帧
            cv::Mat temp;
            //将摄像头获取的当前帧图片放入到 中间文件中
            cap >> temp;
            //将其转化为RGB像素图片
            cv_image<bgr_pixel> cimg(temp);
            //开始进行脸部识别
            std::vector<rectangle> faces = detector(cimg);
            //发现每一个脸的pos估计 Find the pose of each face
            std::vector<full_object_detection> shapes;
            unsigned faceNumber=    faces.size();
            //将所有脸的区域放入集合之中
            for (unsigned i = 0; i < faceNumber; i++)
                shapes.push_back(pos_modle(cimg, faces[i]));
            if (!shapes.empty()) {
                int faceNumber = shapes.size();
                for (int j = 0; j < faceNumber; j++)
                {
                    for (int i = 0; i < 68; i++)
                    {
                       //用来画特征值的点
                        cv::circle(temp, cvPoint(shapes[j].part(i).x(), shapes[j].part(i).y()), 3, cv::Scalar(0, 0, 255), -1);
                       //显示数字
                        cv::putText(temp,to_string(i), cvPoint(shapes[0].part(i).x(), shapes[0].part(i).y()), CV_FONT_HERSHEY_PLAIN,1, cv::Scalar(0, 0, 255));

                    }
                }
            }
            //Display it all on the screen  展示每一帧的图片
            cv::imshow("Dlib标记", temp);
        }

    }
    catch (serialization_error &e) {
        cout << "You need dlib‘s default face landmarking file to run this example.(你需要添加landmark的bat文件,才可以跑这个实例)" << endl;
            cout << endl << e.what() << endl;
    }
    catch(exception &e){
        cout <<  e.what() << endl;

    }

}

时间: 2024-10-10 05:36:15

Dlib 实现人脸的68点检测的相关文章

人工智能?使用Python和dlib进行人脸检测

本人从事Python以及近9年了,目前在向人工智能进军,遇到不懂得可以骚扰我:154.7251666,Q记着,别加错了,想学Python的可以来问我学习方法,想要源代码的也可以滴滴我 "Dlib是一个现代化的C ++工具包,包含用于创建复杂软件的机器学习算法和工具".它使您能够直接在Python中运行许多任务,其中一个例子就是人脸检测. 安装dlib并不像只做一个"pip install dlib"那么简单,因为要正确配置和编译dlib,您首先需要安装其他系统依赖项

人脸识别门禁检测的必要性

人脸识别系统需具备活体检测功能,以判断提交的人脸特征是否来自有生命的真实个体. 人脸活体检测的基本原理 人脸门禁的基本功能是人脸验证(Face Verification),而活体检测属于人脸防伪技术(Face Anti-Spoofing).人脸验证和人脸防伪,两种技术各有侧重. 人脸验证:人脸验证是判断两个人脸图是否为同一个人的算法,即通过人脸比对获得两个人脸特征的相似度,然后与预设的阈值比较,相似度大于阈值,则为同一人,反之则不同.这是近年来一个非常热门的研究方向,也产生了一大批算法模型和损失

dlib实现人脸landmark点检测以及一些其他的应用

首先从中这里下载下代码: https://github.com/ageitgey/face_recognition#face-recognition 然后安装所以必须的组件,我用的Python3.5 进入example里面跑他的demo,主要就是掉了dlib的接口比如: face_locations = face_recognition.face_locations(rgb_frame) face_encodings = face_recognition.face_encodings(rgb_f

写个神经网络,让她认得我`(?????)(Tensorflow,opencv,dlib,cnn,人脸识别)

这段时间正在学习tensorflow的卷积神经网络部分,为了对卷积神经网络能够有一个更深的了解,自己动手实现一个例程是比较好的方式,所以就选了一个这样比较有点意思的项目. 项目的github地址:github 喜欢的话就给个Star吧. 想要她认得我,就需要给她一些我的照片,让她记住我的人脸特征,为了让她区分我和其他人,还需要给她一些其他人的照片做参照,所以就需要两组数据集来让她学习,如果想让她多认识几个人,那多给她几组图片集学习就可以了.下面就开始让我们来搭建这个能认识我的"她".

opencv2实现人脸眼鼻口检测_不大稳定

#include <opencv2/core/core.hpp> #include <opencv2/highgui//highgui.hpp> #include <opencv2/objdetect/objdetect.hpp> #include <string> #include <vector> using namespace std; int main() { cv::CascadeClassifier mFaceDetector; cv

uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件

插件亮点 1 支持安卓平板(横竖屏均可),苹果的iPad.2 颜色图片均可更换. 特别提醒 此插件包含 android 端和 iOS 端,考虑到有些同学只做其中一个端的 app,特意分为 2 个插件,减小安装包体积.android 端请点击这里.iOS 端请点击这里. 1.前言 最近在使用 uniapp 开发项目,有刷脸实名认证的需求,最终使用百度人脸识别实现了需求.自己做了个 APP 原生插件,给大家介绍下用法.本插件主要功能是通过动作检测活体,采集人脸返回.其他功能需要自主实现,如刷脸登录,

Android使用Face++ SDK进行人脸识别和年龄检测

Face++的官网: http://www.faceplusplus.com.cn/ 可以识别照片中的人脸位置,人物的年龄,性别,种族,是否微笑等信息. 首先创建应用,会分配给我们一个API Key和API Secret,然后下载"Java SDK(Android)",导入Jar包和库文件,参考官方的Demo进行编写. 1.FaceDetectUtil帮助类: package com.zms.carlauncher.util; import java.io.ByteArrayOutpu

证件识别,身份证识别,人脸校对,活体检测,OCR身份证识别

在实名制铺天盖地的情况下,为了提高效率.节省成本,同时提升用户体验,身份证识别已迅速被各个企业所应用. 目前,市面上有身份证识别产品的公司大约有七八家,各家特点不一样,在选择身份证识别产品时要综合考量几家的优缺点. 作为后起之秀,译图智讯精于匠心,追求极致,努力将产品打造得更好,其身份证OCR识别具有以下几大特点: 1.快速:识别时间小于1秒 2.精准:识别率高达99% 3.多模式:可图像导入识别.可视频预览识别.也可拍照识别 4.正反面均可识别 5.可支持少数民族身份证识别及部分生僻字识别 6

图片人脸检测——Dlib版(四)

上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库. 点击查看往期: <图片人脸检测——OpenCV版(二)> <视频人脸检测——OpenCV版(三)> dlib与OpenCV对比 识别精准度:Dlib >= OpenCV Dlib更多的人脸识别模型,可以检测脸部68甚至更多的特征点 效果展示 人脸的68个特征点 安装dlib 下载地址:https://pypi.org/simple/dlib/ 选择适合你的版本,本