OpenCV实现人脸识别(二)级联分类器使用 您所在的位置:网站首页 人脸分类器下载安装 OpenCV实现人脸识别(二)级联分类器使用

OpenCV实现人脸识别(二)级联分类器使用

2023-07-09 11:51| 来源: 网络整理| 查看: 265

本节介绍如何使用OpenCV已经分类好的级联分类器来实现人脸的检测,并在检测到的地方做上标记。

分类器的种类和加载 函数使用 人脸识别案例 分类器的种类和加载

在OpenCV中,可以调用已经训练好的级联分类器。训练分类器非常耗费时间。现成的一些分类器已经可以用来检测人脸及相关特征(例如眼睛和鼻子)、人类和其他物体。这些级联分类器以XML 文件存放在OpenCV源文件的data目录中,加载不同的联级分类器的XML文件就可以实现不同对象的检测。

OpenCV自带的联级分类器在OpenCV根目录的data文件夹中,分别有三个子文件夹:haarcascades、hogcacades、lbpcascades,里面分别存储的是Haar级联分类器、HOG级联分类器、LBP级联分类器。

Haar级联分类器多达20多种,且还在继续更新。部分如下表所示。

级联分类器

加载级联分类器的语法:

= cv2.CascadeClassifier( filename ) filename是分类器的路径和名称

使用级联分类器时需要注意,在anaconda中使用pip安装的OpenCV,则无法直接获取级联分类器的XML文件。可以通过以下两种方式:

在OpenCV的安装目录下的data文件夹内查找XML文件 在网络上下载相应的XML文件,下载并使用 函数使用

人脸检测使用的是cv2.CascadeClassifier.detectMultiScale()函数。可以检测图片中的所有人脸。

object = cv2.CascadeClassifier.detectMultiScale(image[, scaleFactor=None[, minNeighbors=None[, flags=None[, minSize=None[, maxSize=None]]]]]):

image:待检测的图像,通常为灰度图像

scaleFactor:表示在前后两次相继的扫描中,搜索窗口的缩放比例

minNeighbors:表示构成检测目标的相邻矩形的最小个数。默认值为3,表示有3个以上的检测标记存在时,才认为人脸的存在。如果希望提高检测的准确率,可以将该值设置的更大,但同时可能会让一些人脸无法被检测到

flags:不常用参数,一般省略。

minSize:目标的最小尺寸,小于这个尺寸的目标将被忽略

maxSize:目标的最大尺寸,大于这个尺寸的目标将被忽略

objects:返回值,目标对象的矩形框向量组

人脸识别案例 import cv2 #读取待检测的图像 image = cv2.imread('test.png') # 获取xml文件,加载人脸检测器 faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 色彩转换,转换为灰度图像 gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) # 调用函数detectMultiScale faces = faceCascade.detectMultiScale( gray, scaleFactor = 1.2, minNeighbors = 4, minSize = (4,4) ) print(faces) #打印输出测试结果 print("发现{0}个人脸!".format(len(faces))) #逐个标记人脸 for(x,y,w,h) in faces: # cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2) #矩形标注 cv2.circle(image,(int((x+x+w)/2),int((y+y+h)/2)),int(w/2),(0,255,0),2) #显示结果 cv2.imshow("dect",image) #保存检测结果 cv2.imwrite("re.jpg",image) cv2.waitKey(0) cv2.destroyAllWindows()

识别结果:

运行结果

haarcascade_frontalface_default.xml源文件下载

提供了别的人脸识别素材:

人脸识别素材



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有