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

【进阶OpenCV】 (12)--人脸检测识别

文章目录

  • 人脸识别
    • 一、获取分类器
    • 二、代码实现
      • 1. 图片预处理
      • 2. 加载人脸检测分类器
      • 3. 检测人脸
      • 4. 标注人脸
  • 总结

人脸识别

要实现人脸识别首先要判断当前图像中是否出现了人脸,这就是人脸检测。只有检测到图像中出现了人脸,才能据此判断这个人到底是谁。那么,如何实现人脸识别呢?

调用 OpenCV 中训练好的分类器实现人脸检测。OpenCV 提供了训练好的haar级联分类器,OpenCV 还提供了使用 HOG 特征(主要用于行人检测)和 LBP 算法的级联分类器。

  • 分类器作用这个分类器是通过机器学习算法训练得到的,能够识别出图像中与人脸特征相匹配的区域。

接下来,我们来尝试对以下照片进行人脸检测:

在这里插入图片描述

一、获取分类器

  • 分类器作用这个分类器是通过机器学习算法训练得到的,能够识别出图像中与人脸特征相匹配的区域。

如何获取分类器呢?在左边的工程中找到外部库“External Libraries”,找到site-packages包,接着找到我们安装的第三方库cv2,该库下的data中,保存着分类器:

在这里插入图片描述

在这里插入图片描述

  • 路径External Libraries/site-packages/cv2/data

二、代码实现

1. 图片预处理

使用cv2.cvtColor()函数将读取的彩色图片转换为灰度图。这是因为人脸检测算法通常在灰度图上运行得更快且更有效

import cv2
image = cv2.imread('p1.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)

2. 加载人脸检测分类器

使用cv2.CascadeClassifier()函数加载预训练的人脸检测分类器。这个分类器是基于Haar特征的,文件名为**“haarcascade_frontalface_default.xml”**,它通常与OpenCV库一起提供。

faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

3. 检测人脸

  • detectMultiScale()函数
faces = faceCascade.detectMultiScale(gray, scaleFactor, minNeighbors, minSize)
  • 参数
-- faces:该函数返回一个人脸区域的列表。每个区域由其左上角的坐标(x, y)、宽度w和高度h表示。
-- scaleFactor:控制图像尺寸减小的比例。
-- minNeighbors:表示每个候选矩形区域需要有多少个相邻的矩形区域来保留该区域。
-- minSize:定义了人脸可能的最小尺寸。
  • 代码
faces = faceCascade.detectMultiScale(gray, scaleFactor=1.05, minNeighbors=10, minSize=(8,8))
print("发现{0}张人脸!".format(len(faces)))  
print("其位置分别是:", faces)
-------------
发现4张人脸!
其位置分别是: [[208 122 128 128]
 [375 171 132 132]
 [ 37 153 127 127]
 [613 184 148 148]]

4. 标注人脸

使用cv2.rectangle()函数在原始图片上绘制绿色矩形框,标记出检测到的人脸位置。

for (x,y,w,h) in faces:
    cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow("result",image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

总结

本篇介绍了如何对人脸进行人脸识别检测。就是利用已经训练好的分类器模型,直接进行加载利用,识别图片。


http://www.kler.cn/news/359532.html

相关文章:

  • 基于SpringBoot+Vue的旅游服务平台【提供源码+答辩PPT+参考文档+项目部署】
  • 智能优化算法-生物地理学算法(BBO)(附源码)
  • 学习ROS系列 python语言
  • 起吊机革新:协议转换器解锁安全与效率
  • 提示词高级阶段学习day2.1-在提示词编写中对{}的使用教程
  • Python机器学习中的主成分分析(PCA)全面解析与应用
  • 深度学习 自动求梯度
  • kubernetes(k8s)面试之2024
  • Spring Boot:中小型医院网站开发新趋势
  • react18中如何实现同步的setState来实现所见即所得的效果
  • 【C语言】文件操作(2)(文件缓冲区和随机读取函数)
  • 当物理学奖遇上机器学习:创新融合的里程碑
  • Unity修改鼠标指针大小
  • nginx中的HTTP 负载均衡
  • 【python+Redis】hash修改
  • 真空探针台选型需知
  • Spring Boot:如何实现JAR包的直接运行
  • 首个统一生成和判别任务的条件生成模型框架BiGR:专注于增强生成和表示能力,可执行视觉生成、辨别、编辑等任务
  • Android Studio Ladybug指定ndk版本
  • python excel如何转成json,并且如何解决excel转成json时中文汉字乱码的问题