OpenCV实现人脸检测(Haar特征)

news/2024/7/21 6:46:35 标签: opencv, 人工智能, 计算机视觉, 图像处理

学习目标

原理

实现

import cv2 as cv
print(cv.__file__)

路径:E:\Anaconda3\envs\test_py3.6\Lib\site-packages\cv2\data

代码实现

import cv2 as cv
import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
#1,以灰度图的形式读取图片
img = cv.imread("ll.jpg")
gray = cv.cvtColor(img , cv.COLOR_BGR2GRAY)

#2,实例化OpenCV人脸 和 眼睛识别的分类器
face_cas = cv.CascadeClassifier("haarcascade_frontalface_default.xml")
face_cas.load("haarcascade_frontalface_default.xml")  #加载已训练好的人脸识别模型


eyes_cas = cv.CascadeClassifier("haarcascade_eye.xml")
eyes_cas.load("haarcascade_eye.xml") #加载已训练好的眼睛识别模型

#3,调用识别人脸
'''gray: 输入灰度图像;
scaleFactor: 图像缩放比例,即在前一张图像的基础上,将图像缩小的比例,默认为 1.1;
minNeighbors: 每个矩形应该保留的邻居数,这个参数可以理解为减少误检的一个参数。默认为 3,可以根据实际情况调整;
minSize: 目标矩形的最小大小,小于这个尺寸的矩形会被忽略,默认为 (30, 30),这里设置为 (32, 32)。'''
faceRects = face_cas.detectMultiScale( gray,scaleFactor=1.2,minNeighbors=10,minSize=(32,32))
for faceRect in faceRects: #遍历所有检测到的人脸矩形框
    x,y,w,h = faceRect  #获取当前人脸矩形框的坐标和大小
    #框出人脸
    cv.rectangle(img,(x,y),(x+h,y+w),(0,255,0),3)
    #4,在识别出的人脸中进行眼睛检测
    roi_color = img[y:y+h,x:x+w]  #提取当前人脸区域的彩色图像
    roi_gray = gray[y:y+h,x:x+w]  #提取当前人脸区域的灰度图像
    eyes = eyes_cas.detectMultiScale(roi_gray)  #在当前人脸区域检测眼睛,并返回检测到的眼睛矩形框数组
    for (ex,ey,ew,eh) in eyes:  #遍历所有检测到的眼睛矩形框
        cv.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

#检测结果绘制
plt.figure(figsize=(8,6),dpi=100)
plt.imshow(img[:,:,::-1]),plt.title("检测结果")
plt.show()

结果展示


http://www.niftyadmin.cn/n/5067928.html

相关文章

联想M7216NWA一体机连接WiFi及手机添加打印机方法

联想M7216NWA一体机连接WiFi方法: 1、首先按打印机操作面板上的“功能键”;【用“”(上翻页)“-”(下翻页)来选择菜单的内容】 2、下翻页键找到并选择“网络”,然后“确认键”; 3…

网络安全的发展方向是什么?网络安全学什么内容

前言 不少小伙伴开始学习网络安全技术,但却不知道学习网络安全能找什么工作?网络安全是现下较为火热的职业岗位,吸引了许多企业和个人对网络安全技术的青睐。学习网络安全的人越来越多,网络安全也有很多发展方向。那么如何选择网…

Java架构师设计思想

目录 1 设计核心思想封装2 设计核心思想隔离2.1 隔离的好处3 设计思想由大到小,由粗到精,逐步细化3.1 由大到小3.2 由粗到精3.3 逐步细化4 设计思想迭代4.1 和设计思想由大到小,由粗到精,逐步细化区别5 总结1 设计核心思想封装 首先我们来看一下什么是封装。那封装呢也叫做…

【什么是闭包? 闭包产生的原因? 闭包有哪些表现形式?】

JS闭包 什么是闭包?闭包产生的原因?闭包有哪些表现形式? 什么是闭包? 闭包是指一个函数可以访问并操作在其作用域之外的变量的能力。在 JavaScript 中,每当函数被创建时,就会创建一个闭包。 以下是一个简单的闭包示例&#xf…

7-2 图着色问题

输入样例&#xff1a; 6 8 3 2 1 1 3 4 6 2 5 2 4 5 4 5 6 3 6 4 1 2 3 3 1 2 4 5 6 6 4 5 1 2 3 4 5 6 2 3 4 2 3 4 输出样例&#xff1a; Yes Yes No No idea 注意合理的方案需满足&#xff1a;用到的颜色数 给定颜色数 solution #include <cstdio> #include &l…

从某达OA到Yii2框架的cookie反序列化漏洞研究

序言 近期网上流传的某达OA存在PHP反序列化漏洞&#xff0c;导致命令执行。因为该漏洞底层是Yii2框架的漏洞&#xff0c;所以搭建好了Yii2框架环境&#xff0c;在Yii2框架的环境下来进行模拟研究&#xff0c;希望能达到举一反三和类比分析学习的目的。该cookie处反序列化漏洞属…

Modelsim测试覆盖率操作说明

1、打开Project窗口界面 2、在project界面下&#xff0c;选中所有需要测试覆盖率的.v文件&#xff08;不包括tb文件&#xff09;&#xff0c;鼠标点击右键&#xff0c;在Properties选项中选择Coverage选项&#xff0c;选择需要测试的覆盖率类型 3、重新编译所有的源文件&#x…

【Java】UnsupportedClassVersionError错误

2023年10月5日&#xff0c;周四晚上 UnsupportedClassVersionError错误表示类文件版本和JDK版本不匹配 所以为了解决"UnsupportedClassVersionError"错误,需要更新JDK到相应的版本 class文件版本与JDK版本的对应关系如下: class文件版本45 JDK 1.1class文件版本4…