OpenCV 人臉分析----人臉識別的一個經典類cv::face::EigenFaceRecognizer

  • 操作系統:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 編程語言:C++11

算法描述

這是基于 PCA(主成分分析) 的人臉識別算法實現。它通過將人臉圖像投影到一個低維的“特征臉”空間中進行識別,是最早也是最基礎的人臉識別方法之一。

構造函數與參數

你可以使用以下方式創建 EigenFaceRecognizer:

// 默認構造
Ptr<EigenFaceRecognizer> model = EigenFaceRecognizer::create();// 或者指定 PCA 成分數和置信度閾值
Ptr<EigenFaceRecognizer> model = EigenFaceRecognizer::create(num_components, threshold);
參數描述
num_componentsPCA 保留的主成分數,默認為 0(自動計算)
threshold預測時的置信度閾值,超過此值認為未知身份

核心函數摘要

方法描述
void train(InputArrayOfArrays _src, InputArray _labels)使用圖像集和對應標簽訓練模型
void predict(InputArray src, int &label, double &confidence) const預測輸入圖像的標簽及置信度
void save(const String& filename)保存訓練好的模型到文件
void load(const String& filename)從文件加載模型
Mat getEigenValues()獲取特征值
vector getEigenVectors()獲取特征向量(即特征臉)
vector getProjections()獲取訓練樣本的投影向量
double getThreshold()獲取當前置信度閾值
void setThreshold(double val)設置置信度閾值

注意事項

  • 圖像必須為 單通道灰度圖;
  • 所有圖像尺寸必須一致(例如統一縮放為 96x96);
  • 標簽為整數類型,表示不同身份 ID;
  • 對光照、姿態變化較敏感;
  • 不適用于大規模數據集或復雜場景;

代碼示例


#include <opencv2/opencv.hpp>
#include <opencv2/face.hpp>
#include <vector>using namespace cv;
using namespace cv::face;
using namespace std;int main() {// 準備訓練數據:人臉圖像和對應的標簽vector<Mat> images;     // 人臉圖像(灰度圖)vector<int> labels;     // 標簽(如 0: 張三, 1: 李四)// 示例加載圖像并轉換為灰度圖Mat img1 = imread("/media/dingxin/data/study/OpenCV/sources/images/1.pgm", IMREAD_GRAYSCALE);Mat img2 = imread("/media/dingxin/data/study/OpenCV/sources/images/2.pgm", IMREAD_GRAYSCALE);images.push_back(img1);images.push_back(img2);labels.push_back(0);  // 同一人使用相同標簽labels.push_back(0);// 創建 EigenFaceRecognizer 實例Ptr<EigenFaceRecognizer> model = EigenFaceRecognizer::create();// 訓練模型model->train(images, labels);// 預測新圖像Mat testImage = imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", IMREAD_GRAYSCALE);resize(testImage, testImage, Size(img2.cols, img2.rows));int predictedLabel;double confidence;model->predict(testImage, predictedLabel, confidence);cout << "Predicted label: " << predictedLabel << ", Confidence: " << confidence << endl;return 0;
}

運行結果

Predicted label: 0, Confidence: 1490.02

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90075.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RESTful風格

帶著問題&#xff0c;找答案&#xff1a; 通過本片文章&#xff0c;你會了解以下四點。并且我會給出go語言的實現案例。 1、了解restful風格的來源、起源、演變史 2、了解restful風格的定義、含義 3、掌握restful風格的簡單運用 4、做一個小demo 在restful中前進&#xf…

了解GC嗎?什么是GC?

GC是什么&#xff1f;為什么要GC&#xff1f; GC&#xff08; Garbage Collection &#xff09;&#xff0c;垃圾回收&#xff0c;是Java與C的主要區別之一。作為Java開發者&#xff0c;一般不需要專門編寫內存回收和垃圾清理代碼。這是因為在Java虛擬機中&#xff0c;存在自動…

FDMA讀寫AXI BRAM交互:FPGA高速數據傳輸的核心技術

在圖像處理系統中,當1080P視頻流以每秒60幀的速度傳輸時,傳統DMA每幀會浪費27%的帶寬在地址管理上——而FDMA技術能將這些損失降至3%以內 現代FPGA系統中,高效數據搬運往往是性能瓶頸的關鍵所在。當你在手機上流暢播放4K視頻、在自動駕駛系統中實時處理激光雷達點云時,背后…

獨立開發A/B測試實用教程

A/B測試&#xff08;A/B Testing&#xff09;&#xff0c;又稱分組測試、對照實驗&#xff0c;是產品開發和運營中提升轉化率、優化用戶體驗的常用方法。無論你是做App、SaaS、網站還是小程序&#xff0c;合理地利用A/B測試&#xff0c;都能幫助你用數據驅動決策&#xff0c;讓…

如何將iPhone備份到Mac/MacBook

許多iPhone用戶非常重視備份&#xff0c;但在Mac上選擇合適的備份方法可能會令人困惑。市場上有各種各樣的備份工具&#xff0c;找到一個既易于使用又能保存所有重要數據&#xff08;如照片、視頻、消息、WhatsApp聊天記錄和聯系人&#xff09;的工具至關重要。如果你正在尋找一…

Logseq 插件開發實戰四:發布到官方插件市場

&#x1f6a9;系列回顧 初識插件機制并實現自動壓縮粘貼的圖片國際化 I18N 與配置多語言自定義斜線命令 SlashCommand發布到官方插件市場 開源地址&#xff1a;logseq-plugin-image-tiny&#xff0c;歡迎來?。 &#x1f41e; 插件上線問題記錄 問題描述 本地插件開發完成后…

[netty5: ByteToMessageCodec MessageToByteEncoder ByteToMessageDecoder]-源碼分析

ByteToMessageCodec ByteToMessageCodec 是一個結合了 ByteToMessageDecoder 和 MessageToByteEncoder 的編解碼器&#xff0c;可以實時地將字節流編碼或解碼為消息&#xff0c;反之亦然。 public abstract class ByteToMessageCodec<I> extends ChannelHandlerAdapter {…

Ubuntu20.04安裝mujoco210, mujoco-py時的報錯處理

參考 Ubantu 20.04 安裝 Mujoco210、mujoco-py、gym及報錯解決 安裝 mujoco210 創建 .mujoco 文件夾 mkdir ~/.mujoco親測必須是 .mujoco 文件夾&#xff0c;不然會報錯&#xff01; 下載 mujoco210-linux-x86_64.tar.gz 并解壓到 .mujoco 文件夾 mojoco下載地址 測試 mojo…

全志T507 音頻ALSA核心層注冊流程分析

一.ALSA核心層注冊流程分析 驅動目錄&#xff1a;kernel-4.9/sound/core/sound.c struct file_operations snd_fops {.owner THIS_MODULE,.open snd_open, (inode, file)---->struct snd_minor *mptr snd_minors[minor];---->file->f_op fops_get(mptr->f_ops…

評論區實現 前端Vue

根據后端部分定義評論區功能實現 golang后端部分-CSDN博客&#xff0c;重點需要實現三個部分&#xff0c;1.當前用戶發起新根評論請求&#xff1b;2.評論區展示部分&#xff1b;3.某一根評論的子評論展示以及回復組件顯示。 整體流程解釋 數據從后端接收&#xff0c;整體在in…

差分定位技術:原理、分類與應用場景

文章目錄 簡介基本概念位置差分偽距差分載波相位 差分定位技術精密單點定位&#xff08;PPP&#xff09;差分全球定位系統&#xff08;DGPS&#xff09;實時動態定位&#xff08;RTK&#xff09; 應用場景總結 簡介 差分定位&#xff08;Differential Positioning&#xff09;是…

tomcat的tar包轉換成rpm包的保姆級教程

環境說明 &#xff1a;centos 71. 安裝打包工具&#xff1a;yum install -y rpm-build rpmdevtools2. 創建 RPM 打包環境&#xff1a;rpmdev-setuptree?輸入之后是下面的結果~/rpmbuild/ ├── BUILD ├── RPMS ├── SOURCES ├── SPECS └── SRPMS?準備 Tomcat 源碼…

【牛客算法】小美的數組刪除

文章目錄 一、題目介紹二、解題思路三、解題算法實現四、算法分析4.1 代碼邏輯4.2 逆向遍歷求MEX的設計精妙之處4.2.1 逆向遍歷:解決MEX更新的連續性4.2.2 利用MEX的單調性4.2.3 空間復用與狀態壓縮4.2.4 與問題特性的完美契合4.2.5 總結:為什么說這個設計“妙”?五、算法復…

MyBatisPlus-01-環境初始化及簡單應用

文章目錄【README】【1】springboot集成mybatis-plus配置【1.1】目錄結構【相關說明】【1.2】代碼示例【pom.xml】【application.properties】【MybatisPlusNoteController】【UserAppService】【UserMapper】【UserPO】【建表語句】【2】演示【README】 本文代碼參見&#xf…

Web爬蟲編程語言選擇指南

剛學爬蟲的小伙伴常常為選擇那種語言來寫爬蟲而煩惱&#xff0c;今天我將總結幾種語言的優劣勢&#xff0c;然后選擇適合編寫 Web爬蟲 的編程語言。這就需要我們考慮開發效率、生態庫支持、并發性能等因素。以下是主流選擇及特點跟著一起看看吧&#xff1a; 1. Python&#xff…

學習日志06 python

加油&#xff0c;今天的任務是學習面向對象編程&#xff0c;設計一個簡單的寵物管理系統&#xff08;寵物類、貓 / 狗子類&#xff09;&#xff0c;先做5道題目開啟學習狀態吧&#xff01;1 setdefault()在 Python 中&#xff0c;setdefault() 是字典&#xff08;dict&#xff…

基于Java+springboot 的車險理賠信息管理系統

源碼、數據庫、包調試源碼編號&#xff1a;S595源碼名稱&#xff1a;基于springboot 的車險理賠信息管理系統用戶類型&#xff1a;多角色&#xff0c;用戶、事故調查員、管理員數據庫表數量&#xff1a;14 張表主要技術&#xff1a;Java、Vue、ElementUl 、SpringBoot、Maven運…

MyDockFinder 綠色便攜版 | 一鍵仿Mac桌面,非常簡單

如果你既不想升級到Win11&#xff0c;又想體驗Mac桌面的高級感&#xff0c;那么MyDockFinder將是你的最佳選擇。這是一款專為Windows系統設計的桌面美化工具&#xff0c;能夠將你的桌面轉變成MacOS的風格。它提供了類似Dock欄和Finder的功能&#xff0c;讓你在不更換操作系統的…

Babylon.js 材質克隆與紋理共享:你可能遇到的問題及解決方案

在 Babylon.js 中&#xff0c;材質&#xff08;Material&#xff09;和紋理&#xff08;Texture&#xff09;的克隆行為可能會影響渲染性能和內存管理&#xff0c;尤其是在多個材質共享同一紋理的情況下。本文將探討&#xff1a;PBRMetallicRoughnessMaterial 的克隆機制&#…

信息素養復賽模擬1和模擬2的編程題標程

信息素養復賽模擬 11&#xff1a;樓層編號 #include<bits/stdc.h> using namespace std; int main(){int n, t;cin >> n >> t;int res 0;for(int i 1; i < n; i ){int x i;bool ok true;while(x){if(x % 10 t){ok false;}x / 10;}res ok;} cout &l…