一、文章概述

本文将要讲述的是Python环境下如何用OpenCV检测人脸,本文的主要内容分为:

1、检测图片中的人脸
2、实时检测视频中出现的人脸
3、用运设备的摄像头实时检测人脸

二:准备工作

提前做的准备:

  • 安装好Python3
  • 下载安装OpenCV库,方法是pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com/pypi/simple
  • 下载特征数据HAAR和LBP,这两种数据都能实现对人脸特征的提取,HAAR大多是小数计算所以运算速度较慢,LBP大多是整数计算运行速度较快。如图所示,本次实例用红框中的文本,其他的文本,比如第一个haarcascade_eye.xml是眼睛识别的文本,我们下次再用。
    注意:点击下载HAAR和LBP的特征数据--------数据集下载

三、开始讲述

1、图片人脸检测

(1)代码和说明

import cv2 as cv
import numpy as npdef face_detect_demo():#人脸检测函数gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)#把图片变成灰度图片,因为人脸的特征需要在灰度图像中查找#以下分别是HAAR和LBP特征数据,任意选择一种即可,注意:路径中的‘/’和‘\’是有要求的# 通过级联检测器 cv.CascadeClassifier,加载特征数据# face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml")face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml")#在尺度空间对图片进行人脸检测,第一个参数是哪个图片,第二个参数是向上或向下的尺度变化,是原来尺度的1.02倍,第三个参数是在相邻的几个人脸检测矩形框内出现就认定成人脸,这里是在相邻的5个人脸检测框内出现,如果图片比较模糊的话建议降低一点faces = face_detector.detectMultiScale(gray, 1.02, 5)for x, y, w, h in faces:#绘制结果图#rectangle参数说明,要绘制的目标图像,矩形的第一个顶点,矩形对角线上的另一个顶点,线条的颜色,线条的宽度cv.rectangle(src, (x, y), (x+w, y+h), (0, 0, 255), 2)cv.imshow("result", src)#输出结果图src = cv.imread("D:/pyproject/cv_renlianjiance/cvrenxiangpic/1.jpg")#图片是JPG和png都可以
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)#创建绘图窗口
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
face_detect_demo()
cv.waitKey(0)
cv.destroyAllWindows()#作用是能正常关闭绘图窗口
123456789101112131415161718192021222324

(2)结果展示

2、视频中的人脸检测

(1)代码和说明

import cv2 as cv
import numpy as npdef face_detect_demo(image):gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)# face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml")face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml")faces = face_detector.detectMultiScale(gray, 1.02, 5)for x, y, w, h in faces:cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)cv.imshow("result", image)capture = cv.VideoCapture("D:/pyproject/cv_renlianjiance/video/1.mp4")
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
while (True):#按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。ret, frame = capture.read()# cv.flip函数表示图像翻转,沿y轴翻转, 0: 沿x轴翻转, <0: x、y轴同时翻转frame = cv.flip(frame, 1)face_detect_demo(frame)#waitKey()方法本身表示等待键盘输入,参数是1,表示延时1ms切换到下一帧图像,对于视频而言;c = cv.waitKey(10)if c == 27:#当键盘按下‘ESC’退出程序break#cv.waitKey(0)参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停,;
cv.waitKey(0)
cv.destroyAllWindows()#作用是能正常关闭绘图窗口
1234567891011121314151617181920212223242526272829

(2)结果展示

3、利用设备上的摄像头进行人脸检测,其实和2中的代码一样,只是打开摄像头,而不是读取视频文件

代码和说明

import cv2 as cv
import numpy as npdef face_detect_demo(image):gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)# face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml")face_detector = cv.CascadeClassifier("D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml")faces = face_detector.detectMultiScale(gray, 1.02, 5)for x, y, w, h in faces:cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)cv.imshow("result", image)capture = cv.VideoCapture(0)#其中的0表示电脑中的第一个相机
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
while (True):#按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。ret, frame = capture.read()# cv.flip函数表示图像翻转,沿y轴翻转, 0: 沿x轴翻转, <0: x、y轴同时翻转frame = cv.flip(frame, 1)face_detect_demo(frame)#waitKey()方法本身表示等待键盘输入,参数是1,表示延时1ms切换到下一帧图像,对于视频而言;c = cv.waitKey(10)if c == 27:#当键盘按下‘ESC’退出程序break#cv.waitKey(0)参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停,;
cv.waitKey(0)
cv.destroyAllWindows()#作用是能正常关闭绘图窗口
1234567891011121314151617181920212223242526272829

以上就是本文所有内容,希望能帮到大家!!!

你学会了吗?如果获取源码请加群:1136192749

基于Python的OpenCV人脸检测!OpenCV太强了!相关推荐

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

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

  2. 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较

    OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...

  3. 基于深度学习的人脸检测和关键点检测推理实践(OpenCV实现,含代码)

    目录 一.任务概述 二.环境准备 三.实现步骤 3.1 Python推理 3.2 C++推理 3.2.1 环境准备 3.2.2 推理 3.3 Java推理 一.任务概述 最近项目中大量场景需要用到人脸 ...

  4. .NetCore——基于OpenCV人脸检测

    .NetCore--基于OpenCV人脸检测 一.介绍 在.NetCore中,基于OpenCV实现对静态图片的人脸识别,检测人脸是否存在,且存在的数量.注: 不能自动学习人脸特征. 二.使用 首先引入 ...

  5. 基于Haar分类器的OpenCV人脸检测实例

    一.人脸的Haar特征分类器是什么 人脸的Haar特征分类器就是一个XML文件,该文件中会描述人脸的Haar特征值.当然Haar特征的用途可不止可以用来描述人脸这一种,用来描述眼睛,嘴唇或是其它物体也 ...

  6. opencv人脸检测总结

    主要参考了很多大神的总结,做了自己的整理,还没有完成,,后续不断完善补充 opencv人脸检测总结 一.人脸检测介绍 1. 人脸检测分类 基于知识方法主要利用先验知识将人脸看作器官特征的组合,根据眼睛 ...

  7. OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)

    OpenCV与图像处理学习十七--OpenCV人脸检测(含代码) 一.人脸识别概要 1.1 人脸检测 1.2 人脸对齐(Face Alignment) 1.3 人脸特征提取(Face Feature ...

  8. 视频人脸检测——OpenCV版(三)

    视频人脸检测是图片人脸检测的高级版本,图片检测详情点击查看我的上一篇<图片人脸检测--OpenCV版(二)> 实现思路: 调用电脑的摄像头,把摄像的信息逐帧分解成图片,基于图片检测标识出人 ...

  9. OpenCV-Python实战(21)——OpenCV人脸检测项目在Web端的部署

    OpenCV-Python实战(21)--OpenCV人脸检测项目在Web端的部署 0. 前言 1. OpenCV 人脸检测项目在 Web 端的部署 1.1 解析请求并构建响应 1.2 构建请求进行测 ...

  10. 人脸识别系统——OpenCV人脸检测

    EduCoder:人脸识别系统--OpenCV人脸检测 第1关:图片基本操作 编程要求: 请在右侧编辑器中的BEGIN-END之间编写代码,完成如下要求: 导入openCV库(cv2): 读取路径 s ...

最新文章

  1. SQL中获取刚插入记录时对应的自增列的值
  2. 5.MYSQL存储过程的管理
  3. 成功解决TypeError: map() got an unexpected keyword argument 'num_threads'
  4. UVA11255 Necklace Burnside、组合
  5. 【C语言】控制台窗口图形界面编程(一)句柄和文本属性
  6. python写dnf游戏脚本辅助_HMM-维特比算法明白与实现(python)_dnf辅助,r6辅助
  7. 一道非常棘手的 Java 面试题:i++ 是线程安全的吗
  8. 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|
  9. vue3新增Suspense组件
  10. 自然语言处理中的Attention机制
  11. php 判断输入字符串,php 判断(输入框) 字符串函数
  12. 最新Xcode打包ipa步骤
  13. 【H3C设备组网配置】第一版
  14. 环境科学概论知识点总结
  15. 【题解 图论建模】 航空管制
  16. duang~NBA资讯小程序
  17. 整理了100个软硬件都要懂的示波器基础知识
  18. Matlab论文插图绘制模板第33期—等高线填充图(contourf)
  19. 2016版excel_Excel怎么转换成pdf?教你三招超简单方法
  20. FTP 错误 550 Failed to change directory 记录贴

热门文章

  1. 数据分析综合应用练习:超市销售额分析
  2. 如何用Camtasia在微课中添加测试题?
  3. 红队渗透工具库-忍者安全系统(NINJUTSU OS v3)系统安装
  4. 妈妈再也不用担心我的学习了:“婷婷心选”直播首秀有感
  5. 使用js脚本进行网页截屏的尝试(图文)
  6. ADI DSP开发环境(CCES)下的程序烧录问题(以ADSP-SC589为例)
  7. 凸优化问题最优解存在且唯一的条件
  8. linux-linux常用命令总结四linux压缩、打包、解压命令软件安装管理rpm及yum的使用
  9. 【第一天】做了近5年天猫运营,决定转岗从新开始做一名网络工程师
  10. Ubuntu18.04 ulimit 设置