当前位置: 首页 > news >正文

opencv学习:人脸识别器特征提取BPHFaceRecognizer_create算法的使用

BPHFaceRecognizer_create算法

在OpenCV中,cv2.face.LBPHFaceRecognizer_create()函数用于创建一个局部二值模式直方图(Local Binary Patterns Histograms,简称LBPH)人脸识别器。LBPH是一种用于人脸识别的特征提取方法,它结合了局部二值模式(LBP)和直方图的概念,以生成一个对光照变化和遮挡具有一定鲁棒性的特征表示。

参数threshold=80是这个函数的一个可选参数,它指定了在人脸识别过程中使用的决策阈值。这个阈值用于确定一个预测是否足够可靠,即当预测的置信度高于这个阈值时,预测被认为是可靠的。置信度是一个介于0到100之间的值,表示识别器对其预测的信心水平。如果置信度低于阈值,预测可能被认为是不确定的。

下面是对cv2.face.LBPHFaceRecognizer_create(threshold=80)的详细解释:

  • cv2.face:这是OpenCV库中的一个模块,专门用于人脸识别任务。

  • LBPHFaceRecognizer_create:这是cv2.face模块中的一个函数,用于创建一个LBPH人脸识别器对象。

  • threshold=80:这是一个命名参数,用于设置置信度阈值。在这个例子中,阈值被设置为80,这意味着只有当预测的置信度高于80%时,预测才会被认为是可靠的。

创建LBPH人脸识别器后,你可以使用train方法来训练它,使用训练好的图像和对应的标签。训练完成后,你可以使用predict方法来预测新图像中的人脸属于哪个类别。

代码步骤

使用灰度模式读取图像并添加到列表中,并创建一个标签列表,与图像列表对应(最好选取头像照片)
import cv2  # 导入OpenCV库# 初始化一个空列表来存储图像
images = []# 使用灰度模式读取图像并添加到列表中
# cv2.IMREAD_GRAYSCALE 标志确保图像以灰度模式读取
images.append(cv2.imread('hg1.png', cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('hg2.png', cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('hjh1.png', cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('hjh2.png', cv2.IMREAD_GRAYSCALE))# 创建一个标签列表,与图像列表对应
labels = [0, 0, 1, 1]# 创建一个字典来映射标签到对应的类别名称
dic = {0: "hg", 1: "hjh", -1: 'error'}
读取要预测的图像,同样使用灰度模式
# 读取要预测的图像,同样使用灰度模式
predict_image = cv2.imread('hg.png', cv2.IMREAD_GRAYSCALE)
创建一个LBPH人脸识别器对象,使用训练好的识别器预测要预测的图像的标签和置信度
# 创建一个LBPH人脸识别器对象
recognizer = cv2.face.LBPHFaceRecognizer_create(threshold=80)# 使用图像列表和标签列表训练识别器
recognizer.train(images, np.array(labels))# 使用训练好的识别器预测要预测的图像的标签和置信度
label, confidence = recognizer.predict(predict_image)# 打印预测结果和置信度
# 使用字典来获取对应的类别名称
print('这人是', dic[label])
print('置信度', confidence)

运行结果

完整代码

import cv2  # 导入OpenCV库# 初始化一个空列表来存储图像
images = []# 使用灰度模式读取图像并添加到列表中
# cv2.IMREAD_GRAYSCALE 标志确保图像以灰度模式读取
images.append(cv2.imread('hg1.png', cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('hg2.png', cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('hjh1.png', cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread('hjh2.png', cv2.IMREAD_GRAYSCALE))# 创建一个标签列表,与图像列表对应
labels = [0, 0, 1, 1]# 创建一个字典来映射标签到对应的类别名称
dic = {0: "hg", 1: "hjh", -1: 'error'}# 读取要预测的图像,同样使用灰度模式
predict_image = cv2.imread('hg.png', cv2.IMREAD_GRAYSCALE)# 创建一个LBPH人脸识别器对象
recognizer = cv2.face.LBPHFaceRecognizer_create(threshold=80)# 使用图像列表和标签列表训练识别器
recognizer.train(images, np.array(labels))# 使用训练好的识别器预测要预测的图像的标签和置信度
label, confidence = recognizer.predict(predict_image)# 打印预测结果和置信度
# 使用字典来获取对应的类别名称
print('这人是', dic[label])
print('置信度', confidence)

局限性:

  1. 对光照变化敏感:Haar特征对人脸的光照条件非常敏感,光照的不均匀或变化可能导致检测失败。

  2. 遮挡问题:当人脸被遮挡,例如戴墨镜或口罩时,检测的准确性会受到影响。

  3. 姿态变化:对于侧脸或者姿态变化较大的人脸,检测效果可能不佳。

  4. 计算资源消耗:虽然级联分类器设计得相对高效,但在处理高分辨率图像或视频时,尤其是在实时应用中,可能需要较多的计算资源。

  5. 训练过程复杂:创建Haar级联分类器需要大量的正负样本进行训练,这个过程可能需要大量的计算资源和时间。

  6. 特征描述能力有限:Haar特征对复杂形状和纹理的描述能力有限,容易受到遮挡和噪声的影响。

  7. 参数调整困难detectMultiScale方法的性能受到多个参数的影响,如scaleFactorminNeighbors,这些参数需要根据具体应用场景进行调整,以达到最佳效果。

  8. 误检和漏检:在复杂场景中,如多人脸、相似背景等情况下,可能会出现误检或漏检的情况。

  9. 对图像质量要求较高:对于模糊或分辨率较低的图像,检测质量会下降。

相关文章:

opencv学习:人脸识别器特征提取BPHFaceRecognizer_create算法的使用

BPHFaceRecognizer_create算法 在OpenCV中,cv2.face.LBPHFaceRecognizer_create()函数用于创建一个局部二值模式直方图(Local Binary Patterns Histograms,简称LBPH)人脸识别器。LBPH是一种用于人脸识别的特征提取方法&#xff0…...

HTML+CSS总结【量大管饱】

文章目录 前言HTML总结语义化标签常用标签H5新的语义元素H5的媒体标签\<embed> 元素&#xff08;少用&#xff09;\<object>元素&#xff08;少用&#xff09;\<audio>\<video> 元素包含关系iframe元素嵌入flash内容常用表单inputselect CSS总结权重样…...

Android开发之Broadcast Receive(广播机制)其实开发如此简单

什么是BroadcastReceiver BroadcastReceiver&#xff08;广播接收器&#xff09;用于响应来自其他应用程序或者系统的广播消息。这些消息有时被称为事件或者意图。本质上来讲BroadcastReceiver是一个全局的监听器&#xff0c;隶属于Android四大组件之一。 使用场景 1、 不同…...

Chromium 中chrome.cookies扩展接口c++实现分析

chrome.cookies 使用 chrome.cookies API 查询和修改 Cookie&#xff0c;并在 Cookie 发生更改时收到通知。 更多参考官网定义&#xff1a;chrome.cookies | API | Chrome for Developers (google.cn) 本文以加载一个清理cookies功能扩展为例 https://github.com/Google…...

excel筛选多个单元格内容

通常情况下&#xff0c;excel单元格筛选时&#xff0c;只筛选一个条件&#xff0c;如果要筛选多个条件&#xff0c;可以如下操作&#xff1a; 字符串中间用空格分隔就行。...

Instant 和 Duration 类(进行时间处理)

Instant Instant 类是 Java 8 中引入的&#xff0c;用于表示一个具体的时间点&#xff0c;它基于 UTC&#xff08;协调世界时&#xff09;时区。以下是 Instant 类的一些常用方法及其简要说明&#xff1a; now()&#xff1a;获取当前的 Instant 对象&#xff0c;表示当前时间…...

Java每日面试题(Spring)(day19)

目录 Spring的优点什么是Spring AOP&#xff1f;AOP有哪些实现方式&#xff1f;JDK动态代理和CGLIB动态代理的区别&#xff1f;Spring AOP相关术语Spring通知有哪些类型&#xff1f;什么是Spring IOC&#xff1f;Spring中Bean的作用域有哪些&#xff1f;Spring中的Bean什么时候…...

【多线程】线程池(上)

文章目录 线程池基本概念线程池的优点线程池的特点 创建线程池自定义线程池线程池的工作原理线程池源码分析内置线程池newFixedThreadPoolSingleThreadExecutornewCachedThreadPoolScheduledThreadPool 线程池的核心线程是否会被回收?拒绝策略ThreadPoolExecutor.AbortPolicyT…...

ansible 语句+jinjia2+roles

文章目录 1、when语句1、判断表达式1、比较运算符2、逻辑运算符3、根据rc的返回值判断task任务是否执行成功5、通过条件判断路径是否存在6、in 2、when和其他关键字1、block关键字2、rescue关键字3、always关键字 3、ansible循环语句1、基于列表循环(whith_items)2、基于字典循…...

【Docker项目实战】使用Docker部署HumHub社交网络平台

【Docker项目实战】使用Docker部署HumHub社交网络平台 一、HumHub介绍1.1 HumHub简介1.2 HumHub特点1.3 主要使用场景二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、下载HumHub镜…...

“医者仁术”再进化,AI让乳腺癌筛查迎难而上

世卫组织最新数据显示&#xff0c;我国肿瘤疾病仍然呈上升趋势&#xff0c;肿瘤防控形势依然比较严峻。尤其是像乳腺癌等发病率较高的疾病&#xff0c;早诊断和早治疗意义重大&#xff0c;能够有效降低病死率。 另一方面&#xff0c;中国地域广阔且发展不平衡&#xff0c;各地…...

安卓流式布局实现记录

效果图&#xff1a; 1、导入第三方控件 implementation com.google.android:flexbox:1.1.0 2、布局中使用 <com.google.android.flexbox.FlexboxLayoutandroid:id"id/baggageFl"android:layout_width"match_parent"android:layout_height"wrap_co…...

-bash gcc command not found解决方案(CentOS操作系统)

以 CentOS7 为例&#xff0c;执行以下语句 : yum install gcc如果下载不成功&#xff0c;并且网络没有问题。 执行以下语句 : cp -r /etc/yum.repos.d /etc/yum.repos.d.bakrm -f /etc/yum.repos.d/*.repocurl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.…...

(二)Python输入输出函数

一、输入函数 input函数&#xff1a;用户输入的数据&#xff0c;以字符串形式返回&#xff1b;若需数值类型&#xff0c;则进行类型转换。 xinput("请入你喜欢的蔬菜&#xff1a;") print(x) 二、输出函数 print函数 输出单一数值 x666 print(x) 输出混合类型…...

从调用NCCL到深入NCCL源码

本小白目前研究GPU多卡互连的方案&#xff0c;主要参考NCCL和RCCL进行学习&#xff0c;如有错误&#xff0c;请及时指正&#xff01; 内容还在整理中&#xff0c;近期不断更新&#xff01;&#xff01; 背景介绍 在大模型高性能计算时会需要用到多卡&#xff08;GPU&#xf…...

深入理解Transformer的笔记记录(精简版本)NNLM → Word2Vec

文章的整体介绍顺序为&#xff1a; NNLM → Word2Vec → Seq2Seq → Seq2Seq with Attention → Transformer → Elmo → GPT → BERT 自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理&#xff0c;通常需要将语言数学化&#xff0c;因为计算机机器只认数学符号…...

优选算法第一讲:双指针模块

优选算法第一讲&#xff1a;双指针模块 1.移动零2.复写零3.快乐数4.盛最多水的容器5.有效三角形的个数6.查找总价格为目标值的两个商品7.三数之和8.四数之和 1.移动零 链接: 移动零 下面是一个画图&#xff0c;其中&#xff0c;绿色部分标出的是重点&#xff1a; 代码实现&am…...

智能优化算法-水循环优化算法(WCA)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 水循环优化算法 (Water Cycle Algorithm, WCA) 是一种基于自然界水循环过程的元启发式优化算法&#xff0c;由Shah-Hosseini于2012年提出。WCA通过模拟水滴在河流、湖泊和海洋中的流动过程&#xff0c;以及蒸发…...

基于SpringBoot的个性化健康建议平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理基于智能推荐的卫生健康系统的相关信息成为…...

Mapsui绘制WKT的示例

步骤 创建.NET Framework4.8的WPF应用在NuGet中安装Mapsui.Wpf 4.1.7添加命名空间和组件 <Window x:Class"TestMapsui.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winf…...

一键搭建AI对话系统:通义千问1.5-1.8B-Chat-GPTQ-Int4镜像使用指南

一键搭建AI对话系统&#xff1a;通义千问1.5-1.8B-Chat-GPTQ-Int4镜像使用指南 想快速拥有一个属于自己的AI对话助手吗&#xff1f;今天要介绍的这个方法&#xff0c;可能比你想象中简单得多。不用折腾复杂的模型下载&#xff0c;不用配置繁琐的运行环境&#xff0c;更不用写一…...

掌握TegraRcmGUI:从入门到精通的Switch注入实践指南

掌握TegraRcmGUI&#xff1a;从入门到精通的Switch注入实践指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款基于C开发的图形化界面工具…...

DynamicColor跨平台开发指南:iOS、macOS、watchOS的统一颜色解决方案

DynamicColor跨平台开发指南&#xff1a;iOS、macOS、watchOS的统一颜色解决方案 【免费下载链接】DynamicColor Yet another extension to manipulate colors easily in Swift and SwiftUI 项目地址: https://gitcode.com/gh_mirrors/dy/DynamicColor DynamicColor是一…...

ENet核心架构深度解析:从主机管理到对等通信

ENet核心架构深度解析&#xff1a;从主机管理到对等通信 【免费下载链接】enet ENet reliable UDP networking library 项目地址: https://gitcode.com/gh_mirrors/en/enet ENet是一款高性能的可靠UDP网络库&#xff0c;专为实时多人游戏和低延迟应用设计。它通过创新的…...

Z-Image-GGUF中文支持实测:古风建筑、水墨山水、国潮设计等本土化效果展示

Z-Image-GGUF中文支持实测&#xff1a;古风建筑、水墨山水、国潮设计等本土化效果展示 1. 引言&#xff1a;当AI绘画遇上东方美学 最近在测试各种文生图模型时&#xff0c;我发现了一个挺有意思的现象&#xff1a;很多国外开发的AI绘画工具&#xff0c;在处理中国传统文化元素…...

半导体器件入门:金半接触的5个关键概念解析(附手稿能带图)

半导体器件入门&#xff1a;金半接触的5个关键概念解析&#xff08;附手稿能带图&#xff09; 第一次翻开半导体物理教材时&#xff0c;金半接触那一章总是让人既兴奋又困惑。那些弯曲的能带图、费米能级的移动、神秘的势垒高度&#xff0c;就像一道通往微电子世界的大门。本文…...

Pixel Aurora Engine部署教程:Nginx反向代理+HTTPS配置像素AI服务公网访问

Pixel Aurora Engine部署教程&#xff1a;Nginx反向代理HTTPS配置像素AI服务公网访问 1. 项目介绍与准备 Pixel Aurora Engine是一款基于AI扩散模型的高端像素艺术生成工具&#xff0c;采用复古8-bit游戏风格界面设计。通过本教程&#xff0c;您将学会如何通过Nginx反向代理和…...

永磁同步电机这玩意儿现在工业上用得是真多,今天咱们来点硬核的,手搓个IPMSM的数学模型。先别急着关页面,代码实现和调试坑点都给你备好了

IPMSM数学模型&#xff0c;模拟电机对不同输入的响应&#xff0c;包含速度环和电流环&#xff0c;输出电流转速和转矩。先甩几个核心方程镇楼。d-q轴电压方程&#xff1a; def voltage_equation(t, state, Vd, Vq):id, iq, w_r, theta stateVd ... # 这里放你的控制算法输出V…...

Pixel Epic效果展示:支持Markdown+LaTeX混合输出的学术论文初稿生成案例

Pixel Epic效果展示&#xff1a;支持MarkdownLaTeX混合输出的学术论文初稿生成案例 1. 像素史诗&#xff1a;科研写作的新范式 在传统学术写作工具普遍沉闷单调的背景下&#xff0c;Pixel Epic带来了一场视觉与功能双重革新的科研体验。这款基于AgentCPM-Report大模型的智能终…...

代码生成神器实测:Yi-Coder-1.5B在Ollama上的真实体验与效果

代码生成神器实测&#xff1a;Yi-Coder-1.5B在Ollama上的真实体验与效果 1. 开箱体验&#xff1a;Yi-Coder-1.5B初印象 1.1 为什么选择Yi-Coder-1.5B 作为一名经常需要编写各种编程语言的开发者&#xff0c;我一直在寻找一个既轻量又强大的代码生成工具。Yi-Coder-1.5B以其1…...