c_cpp使用面部模块进行人脸识别(代码片段)

author author     2023-01-11     526

关键词:

#include <iostream>
#include <vector>
#include <filesystem>
#include <string>
#include <regex>

#include <opencv2/opencv.hpp>
#include <opencv2/face.hpp>

int main( int argc, char* argv[] )

    /* Training */
    // Load Cascade Classifier for Face Detect
    cv::CascadeClassifier cascade( "../haarcascade_frontalface_default.xml" );
    if( cascade.empty() )
        return -1;
    

    // Create DataSet
    std::cout << "Create DataSet" << std::endl;
    std::vector<cv::Mat> faces;
    std::vector<int> labels;
    std::tr2::sys::path dataset( "../trainingdata" );
    std::for_each( std::tr2::sys::directory_iterator( dataset ), std::tr2::sys::directory_iterator(),
        [&]( const std::tr2::sys::path& path )
            if( std::tr2::sys::is_regular_file( path ) )
                // Read Image
                cv::Mat image = cv::imread( path.string(), cv::IMREAD_GRAYSCALE );
                if( image.empty() )
                    return;
                

                // Detect Face (First Face)
                std::vector<cv::Rect> rects;
                cascade.detectMultiScale( image, rects );
                cv::Mat face = image( rects[0] );

                // Resize Face
                cv::resize( face, face, cv::Size( 200, 200 ) );

                // Store Face
                faces.push_back( face.clone() );

                // Retrieve Label Number from File Name ( e.g. image01.png )
                const std::string filename = path.filename().string();
                std::smatch match;
                std::regex_search( filename, match, std::regex( "\\d+" ) );
                int label = std::stoi( match.str() );

                // Store Label Number
                labels.push_back( label );
            
        
    );

    // Create Recognizer
    //cv::Ptr<cv::face::FaceRecognizer> model = cv::face::createFisherFaceRecognizer();
    //cv::Ptr<cv::face::FaceRecognizer> model = cv::face::createEigenFaceRecognizer();
    cv::Ptr<cv::face::FaceRecognizer> model = cv::face::createLBPHFaceRecognizer();

    // Training Recognizer
    std::cout << "Training Recognizer" << std::endl;
    model->train( faces, labels );

    // Save Recognizer
    std::cout << "Save Recognizer" << std::endl;
    model->save( "../model.xml" );

    return 0;
#include <iostream>
#include <vector>

#include <opencv2/opencv.hpp>
#include <opencv2/face.hpp>

int main( int argc, char* argv[] )

    // Read Image
    cv::Mat image = cv::imread( "image.jpg", cv::IMREAD_GRAYSCALE );
    if( image.empty() )
        return -1;
    
    
    // Create Recognizer
    //cv::Ptr<cv::face::FaceRecognizer> model = cv::face::createFisherFaceRecognizer();
    //cv::Ptr<cv::face::FaceRecognizer> model = cv::face::createEigenFaceRecognizer();
    cv::Ptr<cv::face::FaceRecognizer> model = cv::face::createLBPHFaceRecognizer();
  
    // Load Recognizer
    model->load( "../model.xml" );
    if( model.empty() )
        return -1;
    
  
    // Load Cascade Classifier for Face Detect
    cv::CascadeClassifier cascade( "../haarcascade_frontalface_default.xml" );
    if( cascade.empty() )
        return -1;
    
  
    // Detect Face
    std::vector<cv::Rect> rects;
    cascade.detectMultiScale( image, rects );
    
    for( const cv::Rect rect : rects )
        // Retrieve Face Image
        cv::Mat face = image( rect );
    
        // FisherFaceRecognizer and EigenFaceRecognizer require resize image to same size as training image.
        // LBPHFaceRecognizer doesn't requere resize image.
        //cv::resize( face, face, cv::Size( 200, 200 ) );
  
        // Face Recognition with Retrieve Most Match Result
        int label = -1;
        double confidence = 0.0;
        model->predict( face, label, confidence );
        std::cout << label << " (" << confidence << ")" << std::endl;
        
        /*
        // Face Recognition with Retrieve All Match Results
        cv::Ptr<cv::face::StandardCollector> collector = cv::face::StandardCollector::create( model->getThreshold() );
        model->predict( face, collector );
        std::vector<std::pair<int, double>> results = collector->getResults( true );
        for( const std::pair<int, double> result : results )
            int label = result.first;
            double confidence = result.second;
            std::cout << label << " (" << confidence << ")" << std::endl;
        
        */
    
    
    return 0;

使用python,opencv,本地二进制模式(lbp)进行人脸识别(代码片段)

使用Python,OpenCV与本地二进制模式(LBP)进行人脸识别1.效果图2.原理及步骤2.1原理2.2步骤3.源码参考在深度学习和暹罗网络之前,面部识别算法依赖于特征提取和机器学习。这篇博客将介绍如何使用本地二进制模... 查看详情

人脸识别实战:使用pythonopencv和深度学习进行人脸识别(代码片段)

在本教程中,您将学习如何使用OpenCV、Python和深度学习执行面部识别。我们将首先简要讨论基于深度学习的面部识别的工作原理,包括“深度度量学习”的概念。从那里,我将帮助您安装实际执行人脸识别所需的库。... 查看详情

使用阈值进行面部识别的理解困难

】使用阈值进行面部识别的理解困难【英文标题】:DifficultyunderstandingusingThresholdforFacialRecognition【发布时间】:2015-06-2502:13:58【问题描述】:这是一个基于理解的问题,用于使用阈值方法进行面部识别。我通俗地理解我们如何使... 查看详情

使用matlab控制笔记本电脑的摄像头,并进行实时人脸检测和识别(代码片段)

目录一、理论基础二、核心程序三、仿真测试结果一、理论基础    人脸识别过程主要由四个阶段组成:人脸检测、图像预处理、面部特征提取和特征识别。首先系统从视频或者相机中捕获图像,检测并分割出其中的人... 查看详情

人脸识别是靠啥技术实现的?

...与人脸识别相关的问题也时有发生,为了让大家快速学会使用人脸识别门禁系统,今天宝比万像人脸识别就来教大家如何学会人脸识别门禁的人脸信息录入使用。启动设备1.默认打开宝比万像人脸识别门禁考勤设备端APP,进入“... 查看详情

face_recognition基础接口(代码片段)

face_recognition基础接口face_recognition使用世界上最简单的人脸识别库,在Python或命令行中识别和操作人脸。使用dlib最先进的人脸识别技术构建而成,并具有深度学习功能。该模型在 LabeledFacesintheWild 基准中的准确率为99.38%... 查看详情

基于opencv实现人脸识别案例(代码片段)

一、基础我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像(不含面部的图像)来训练分类器。我们需要从其中提取特征。下图中的Haar特征会被使用,就像我... 查看详情

图像人脸检测(框出人脸笑脸眼睛)(代码片段)

...取以及匹配与识别910#3、人脸识别的方法11#在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。使用已经训练好的XML格式的分类器进行人脸检测。在OpenCV的安装目录下的data文件夹里可以看到下图所示... 查看详情

python实现人脸识别(代码片段)

...多的API接口供开发者快速的调用运用在项目中本文写的是使用百度AI的在线接口SDK模块(baidu-aip)进行实现人脸识别除了人脸识别,其他api功能的调用也同理。准备工作本机环境系统࿱ 查看详情

opencv4.5.4dnn人脸识别模块使用介绍--如何快速搭建一个人脸识别系统(代码片段)

...一时间送达导读本文主要介绍OpenCV4.5.4中人脸识别模块的使用和简易人脸识别系统的搭建,供大家参考。背景介绍前几天刚刚更新的OpenCV4.5.4版本将基于DNN的人脸检测和人脸识别添加到modules/objdetect中,具体更新介绍如下&#... 查看详情

使用opencv和覆盆子相机模块进行人脸检测的最佳算法是啥

】使用opencv和覆盆子相机模块进行人脸检测的最佳算法是啥【英文标题】:Whatisthebestalgorithmforfacedetectionusingopencvandraspberrycameramodule使用opencv和覆盆子相机模块进行人脸检测的最佳算法是什么【发布时间】:2015-09-1814:40:47【问题... 查看详情

人脸识别检测项目实战(代码片段)

...ff0c;比如人脸考勤系统等,银行卡人脸验证,手机面部识别等,顾名思义它也是一个分类系统,所以我们利用Python调用opencv得分类器进行面部识别。环境配置    操作系统:Windows    程序语言:Python3.9.5... 查看详情

人脸检测实战终极:使用opencv和python进行人脸对齐(代码片段)

使用OpenCV和Python进行人脸对齐这篇博文的目的是演示如何使用OpenCV、Python和面部标志对齐人脸。给定一组面部标志(输入坐标),我们的目标是将图像扭曲并转换为输出坐标空间。在这个输出坐标空间中,整个数... 查看详情

opencv-python实战(17)——人脸识别详解(代码片段)

...战(17)——人脸识别详解0.前言1.人脸识别简介2.使用OpenCV进行人脸识别2.1使用OpenCV进行人脸识别流程示例3.使用dlib进行人脸识别4.使用face_recognition进行人脸识别小结系列链接0.前言人脸处理是人工智能中的一个热门话题&... 查看详情

使用“截断”大 68 点模型进行人脸编码

】使用“截断”大68点模型进行人脸编码【英文标题】:Useof"truncated"large68-pointsmodelforfaceencoding【发布时间】:2021-06-2718:11:14【问题描述】:face_recognition版本:1.3.0Python版本:3.92操作系统:Windows1064说明我试图解决“蒙面... 查看详情

opencv3.3人脸识别模块的api的变化(代码片段)

OpenCV3.3人脸识别模块的API的变化1.前言开始用最新版的OpenCV进行人脸识别的小伙伴也许已经发现了,人脸识别的最新API变化了。这也正是人脸识别等contrib模块没有放到主仓库的原因:不稳定,仍在开发中。当然这次的... 查看详情

python人脸识别系统(代码片段)

...脸识别任务中,我们识别了人的身份。本文重点介绍使用库face_recognition实现人脸识别,该库基于深度学习技术,并承诺使用单个训练图像的准确率超过96%。识别系统用例寻找失踪者识别社交媒体上的帐户识别汽车中... 查看详情

使用 MTCNN 进行人脸识别

】使用MTCNN进行人脸识别【英文标题】:FaceRecognitionusingMTCNN【发布时间】:2021-07-2711:28:44【问题描述】:我在尝试运行的代码中遇到错误。AttributeError:模块\'facedetector_m\'没有属性FaceDetectorClassfromfacenet_pytorchimportMTCNNimportfacedetector_... 查看详情