在静态图像或视频中检测人脸的操作十分相似。视频人脸检测只是从摄像头读出每帧图像,然后采用静态图像中人脸检测方法进行检测。视频中人脸检测还涉及到其他概念,例如跟踪,而静态图像中的人脸识别就没有这样的概念,但它们的基本理论一致。

静态图像的人脸检测

人脸检测首先是加载图像并检测人脸,这也是最基本的一步。为了使所得到的结果有意义,可在原始图像的人脸周围绘制矩阵框。

其中项目中cascades/haarcascades文件夹包含了所有OpenCV的人脸识别的XML文件,用于检测静止文件、视频、摄像头所得到图像中的人脸。

树状图

.
├── image_detection.py
├── video_detection.py
├── images
│     └──people.jpg
└──cascades├── haarcascade_frontalface_default.xml                         └── haarcascade_eye.xml

代码

# -*- coding: utf-8 -*-
"""
Created on Fri Jan  1 21:07:47 2021@author: gkm0120
"""
# image_detection.py
import cv2filename = 'D:/Python/Test_code/pycv/images/people.jpg'def detect(filename):face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml')eye_cascade = cv2.CascadeClassifier('./cascades/haarcascade_eye.xml')img = cv2.imread(filename)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# face_cascade.detectMultiScale(image,scaleFactor,minNeighbor)# 参数2是人脸检测过程中每次迭代图像的压缩率,参数3是每个人脸矩形保留近邻数目的最小值faces = face_cascade.detectMultiScale(gray, 1.3, 5)for (x,y,w,h) in faces:# cv2.rectangle允许通过坐标来绘制矩形(x和y表示左上角的坐标,w和h表示人脸矩形的宽度和高度)img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)# 创建namedWindow的实例,并显示处理后的图像cv2.namedWindow('Face Detection!!')cv2.imshow('Face Detection!!', img)cv2.imwrite('./face_detection.jpg', img)cv2.waitKey(0)detect(filename)

图例

people.jpg face_detection.jpg

视频中的人脸检测

在视频的帧上重复静态人脸检测的过程就能完成视频(如摄像头的输入或视频文件)中的人脸检测。

以下代码主要是:打开摄像头,读取帧,检测帧中的人脸,扫描检测到的人脸的眼睛,对人脸绘制蓝色的矩形框,对眼睛绘制绿色的矩形框。

代码

# -*- coding: utf-8 -*-
"""
Created on Sat Jan  2 10:59:15 2021@author: gkm0120
"""
# video_detection.py
import cv2def detect():face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml')eye_cascade = cv2.CascadeClassifier('./cascades/haarcascade_eye.xml')camera = cv2.VideoCapture(0)# 初始化摄像头,0表示使用第一个摄像头# 捕获帧,转换为灰度图像。read()函数返回两个值:布尔值(表示是否成功读取帧)、帧本身。while (True):ret, frame = camera.read()gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)faces = face_cascade.detectMultiScale(gray, 1.3, 5)#img = cv2.imread(frame)for (x,y,w,h) in faces:img = cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)roi_gray = gray[y:y+h, x:x+w]# 限制对眼睛搜索的最小尺寸为40*40像素,可去掉所有假阳性。然后调试参数(特征的最大尺寸、比例因子、近邻的数量),达到预期。eyes = eye_cascade.detectMultiScale(roi_gray, 1.03, 5, 0, (40,40))# 循环输出检测眼睛的结果,并绘制绿色的矩形框for (ex,ey,ew,eh) in eyes:cv2.rectangle(img,(x+ex,y+ey),(x+ex+ew,y+ey+eh),(0,255,0),2)cv2.imshow("camera", frame)if cv2.waitKey(1000 // 12) & 0xff == ord("q"):breakcamera.release()cv2.destroyAllWindows()if __name__ == "__main__":detect()

图例

注:在眼睛检测中还有另外几个参数。detectMultiscale()函数有许多可选参数:在人脸检测中。默认选项足以检测人脸。但是眼睛是一个比较小的人脸特征,并且胡子或鼻子的本身阴影(self-casting shadow)以及帧的随机阴影都会产生假阳性(false positive)。

【OpenCV-Python】18 使用OpenCV进行人脸检测相关推荐

  1. OpenCV中基于LBP算法的人脸检测测试代码

    下面是OpenCV 3.3中基于CascadeClassifier类的LBP算法实现的人脸检测,从结果上看,不如其它开源库效果好,如libfacedetection,可参考 https://blog. ...

  2. 【OpenCV】Pyqt界面+摄像头实现人脸检测+安全帽识别,最终导出为exe文件

    文章目录 前言 一.界面设计 二.相关代码 三.导出exe文件 总结 前言 接上节的内容.设计好的界面如下: 实现的功能: 1.通过摄像头进行截图,把截图上传到OneNetAI服务器进行人脸检测. 2 ...

  3. opencv python考勤_Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(二)

    一. 门禁考勤系统硬件设计 1 .硬件总体结构 PC端的intel处理器作为硬件平台的核心,是衡量系统能否达到标准的主要标志.本文结合考勤系统,采用intel i5处理器的PC与51单片机共同构建了门 ...

  4. 使用 OpenCV与 HAAR 级联算法进行人脸检测和人脸识别

    AI人脸识别是一种从数字图像或视频帧中识别或验证人脸的技术.人类可以毫不费力地快速识别面部.这对我们来说是一项轻松的任务,但对计算机来说却是一项艰巨的任务.因为存在各种复杂性,例如低分辨率.遮挡.光照 ...

  5. Python 3 利用 Dlib 实现人脸检测和剪切

    0. 引言 利用 Python 开发,借助 Dlib 库进行人脸检测 / face detection 和剪切:   1. crop_faces_show.py : 将检测到的人脸剪切下来,依次排序平 ...

  6. python 图像iou_Python MTCNN(人脸检测)项目附代码讲解(2)-NMS/IOU工具介绍

    对于MTCNN中使用的原理工具,这一节分为代码的三部分(NMS,IOU,框的改变),对于图像金字塔.三个网络(R.P.ONET)和数据集的处理部分放在模型搭建中来讲,要不突然讲起来感觉太虚空,没办法很 ...

  7. 关于OpenCV for Python入门-DNN模块实现人脸检测

    OpenCV在OpenCV增加了DNN模块,DNN模块可以加载预先训练好的Caffe/tensorflow等模型数据,基本支持所有主流的深度学习框架训练生成与导出模型数据加载. 下面用到的SSD人脸检 ...

  8. 如何用OpenCV在Python中实现人脸检测

    选自towardsdatascience 作者:Maël Fabien 机器之心编译 参与:高璇.张倩.淑婷 本教程将介绍如何使用 OpenCV 和 Dlib 在 Python 中创建和运行人脸检测算 ...

  9. 25 行 Python 代码实现人脸检测——OpenCV 技术教程

    安装 OpenCV 首选,你需要找到对应你的操作系统的正确设置文件. 我发现,安装 OpenCV 是最难的一个环节.如果你遇到奇怪的.无法解释的错误,有可能是库崩溃了.32 与 64 比特的兼容问题等 ...

  10. 基于opencv的人脸检测与识别(python)(1)

    基于opencv的人脸检测与识别(python语言)(1) 人脸检测和识别技术就目前而言,已经相对成熟,各类算法层出不穷,这都归功于各位奋斗在一线的大佬的努力(站在巨人的肩膀上的感觉就是爽).本文是参 ...

最新文章

  1. 机器学习梯度下降法举例
  2. AI 摄像头翻车:把光头裁判误为足球,观众花钱看了个寂寞...
  3. spring整合webservice
  4. PHP版本区别5与7:性能 64位 运算符 输入类型 返回类型 匿名类;7改进1.变量存储空间2.数组结构3.函数调用机制
  5. Win10系统的SurfacePro4如何重装系统-3 重装完成之后的系统优化
  6. 计算机科普小知识——U盘格式化
  7. 易生信转录组培训第一期总结
  8. mysql的sql执行过程和explain语句
  9. 高级GIT教程-如何使用GIT调试代码?
  10. 10_官方例子程序01
  11. centos rpm
  12. 『PyTorch x TensorFlow』第六弹_从最小二乘法看自动求导
  13. AJPFX关于子类父类中的构造
  14. 数据结构 严蔚敏 习题总结
  15. 华为 鸿蒙出处,华为商标名“鸿蒙”原来出自《山海经》,网友直呼:“太燃了”...
  16. 特殊字符存入mysql_数据库中特殊字符的存取
  17. sql查询实例1(学生表_课程表_成绩表_教师表)
  18. w10共享网络没有计算机,win10网络共享找不到对方电脑怎么办
  19. 什么是通信原理?原来这么简单
  20. Java游戏碟中谍_MapRedcue的demo(协同过滤)

热门文章

  1. 区块链新思维迅雷同构多链架构实现百万TPS
  2. TikTok搬运一个月百万粉丝是如何操作的
  3. 实验二、80C51汇编语言编程实验:编写3字节二进制加法子程序,并用主程序调用不同的加数和被加数来检测该子程序的正确性。需考虑有进位和无进位情况。
  4. 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
  5. 画论81 戴熙《习苦斋题画》
  6. linux文件属性及 ls -l 命令输出结果详解
  7. Vue + ECharts 象形柱状图 pictorialBar
  8. 开复学生网特别推荐的其它网站 [转]
  9. 天涯文章下载工具TianyaCrawl
  10. 浅谈废旧轮胎热解炼油工艺