dlib实现人脸的68点检测

喜欢雨天的我 喜欢雨天的我     2022-08-26     150

关键词:

Dlib实现68点标定

效果图展示:
使用了Dlib库进行的人脸68点的标定操作,拿到68点后 会很方便通过特征点追加3D挂件。
这里写图片描述


使用前准备:配置VS2015的Dlib库的支持


主要是通过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;

    }



}

图片人脸检测——dlib版

上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库。点击查看往期:《图片人脸检测——OpenCV版(二)》《视频人脸检测——OpenCV版(三)》dlib与OpenCV对比识别精准... 查看详情

dlib库包的介绍与使用,opencv+dlib检测人脸框opencv+dlib进行人脸68关键点检测,opencv+dlib实现人脸识别,dlib进行人脸特征聚类dlib视频目标跟踪(代码片段)

文章目录:1dlib库介绍2dlib人脸检测:绘制出人脸检测框2.1dlib人脸检测源码2.2opencv+dlib人脸检测2.3dlib人脸检测总结3dlib人脸关键点检测:并绘制检测框、关键点、不同区域关键点连线3.1dlib人脸关键点检测源码3.2opencv... 查看详情

基于dlib的人脸检测(68关键点)(代码片段)

...f08;1)环境搭建(2)下载开源数据集二、具体实现效果展示:效果展示:总结前言imutils这个图像处理工具包,除了简化opencv的一些操作之外,还有专门配合dlib处理人脸数据的工具face_utils。dlib提取人脸... 查看详情

人脸检测进阶:更快的5点面部标志检测器(代码片段)

...标志检测器进行比较。然后我们将使用Python、dlib和OpenCV实现面部标志检测,然后运行它并查看结果。最后,我们将讨论使用5点面部标志检测器的一些限制,并重点介绍一些您应该使用5点版本的68点面部标志检测器的... 查看详情

人脸识别完整项目实战(14):实时人脸特征点标定程序设计

...绍Win10环境下,基于VisualStudio2015+Opencv+Dlib开发环境,如何实现实时视频流人脸特征点标定程序的设计。本文内容已经同步录制成视频课程,课程地址:《人脸识别完整项目实战》二、正文2.1界面设计人脸特征点标定程序沿用之前... 查看详情

有没有办法在使用 dlib 检测面部标志后选择面部的特定点?

...间】:2021-07-2511:01:18【问题描述】:我正在使用Dlib的68点人脸界标预测器,它有68个点标记在人脸的各个区域,如下图所示:我已经设法从预测的地标中访问特定点,例如,我可以通过以 查看详情

dlib库的68特征原理人脸关键点检测原理

.../details/80441556shape_predictor_68_face_landmarks.dat是已经训练好的人脸关键点检测器。dlib_face_recognition_resnet_model_v1.dat是训练好的ResNet人脸识别模型。(说明:ResNet是何凯明在微软的时候提出的深度残差网络,获得了ImageNet2015冠军,通过... 查看详情

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

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

opencv+dlib实现疲劳检测(代码片段)

...penCV并利用dlib工具包,通过实时计算EAR值来统计眨眼次数实现了疲劳检测。步骤:首先对对检测到的人脸进行关键点定位并锁定眼睛部分的关键点,然后,对视频的每一帧图像用实时计算的EAR值来统计眨眼次数。(1)锁定眼睛部分... 查看详情

使用 Dlib/python 检测前额点

...】:2019-12-0516:27:24【问题描述】:我们有什么方法可以在人脸图像的额头上获取点吗?我正在使用68点地标shape_predictor来获取脸上的其他点,但对于这个特殊问题,我需要从发际线到前额中心的点。任何建议都会有所帮助。【问... 查看详情

dlib的人脸地标检测程序中如何获取点坐标位置?

】dlib的人脸地标检测程序中如何获取点坐标位置?【英文标题】:Howtogetpointscoordinatepositioninthefacelandmarkdetectionprogramofdlib?【发布时间】:2017-02-0903:49:36【问题描述】:dlib中有一个示例python程序来检测面部标志位置。face_landmark_de... 查看详情

基于tensorflow2.x从零训练15点人脸关键点检测模型(代码片段)

...,人脸关键点检测是一个十分重要的区域,可以实现例如一些人脸矫正、表情分析、姿态分析、人脸识别、人脸美颜等方向。人脸关键点数据集通常有5点、15点、68点、96点、98点、106点、186点等,例如通用Dlib中的68点... 查看详情

opencv图像融合(给人脸添加一个眼镜)(代码片段)

基于dlib68点人脸检测的小功能实现图像旋转找的现成的方法,稍稍麻烦点的地方就是mask处理,虽然目的达到了,但是效果一般1importnumpyasnp2importcv2ascv3importdlib4importmath56#做一个戴眼镜的滤镜效果78detector=dlib.get_frontal_face_detector()9pr... 查看详情

视频是不能p的系列:使用dlib实现人脸识别

本文内容原理说明实现过程本文小结本文是#视频是不能P的系列#的第三篇。此前,我们已经可以通过OpenCV或者Dlib实现对人脸的检测,并在此基础上实现了某种相对有趣的应用。譬如,利用人脸特征点提取面部轮廓并生成表情包... 查看详情

视频是不能p的系列:使用dlib实现人脸识别

本文内容原理说明实现过程本文小结本文是#视频是不能P的系列#的第三篇。此前,我们已经可以通过OpenCV或者Dlib实现对人脸的检测,并在此基础上实现了某种相对有趣的应用。譬如,利用人脸特征点提取面部轮廓并生成表情包... 查看详情

用dlib进行简单的人脸特征提取特征向量到csv文件中,用knn进行预测识别(代码片段)

目标要求:基于收集的全班人脸数据实现分类识别,要求基于图片进行比对识别。任务流程大致分为以下过程:1)模型准备:下载并部署一个人脸特征提取模型(功能包括人脸检测、人脸特征提取,不限算法,比... 查看详情

人脸活体检测人脸识别:眨眼+张口(代码片段)

一:dlib的shape_predictor_68_face_landmarks模型该模型能够检测人脸的68个特征点(faciallandmarks),定位图像中的眼睛,眉毛,鼻子,嘴巴,下颌线(ROI,RegionofInterest) 下颌线 查看详情

opencv联合dlib人脸检测例子二(加快检测)(代码片段)

本篇博客是在opencv联合dlib人脸检测例子的基础上改进了下,加快检测流程观察了下,opencv利用haar级联分类器检测人脸区域的速度要稍快于dlib的frontal_face_detector检测人脸区域的速度。所以这篇博客是利用opencv先检测出人... 查看详情