OpenCV识别人脸案例实战

使用级联函数

基本流程

函数介绍

在OpenCV中,人脸检测使用的是cv2.CascadeClassifier.detectMultiScale()函数,它可以检测出图片中所有的人脸。该函数由分类器对象调用,其语法格式为:

objects = cv2.CascadeClassifier.detectMultiScale( image[, scaleFactor[,

minNeighbors, flags\[, minSize\[, maxSize]]]] )

式中各个参数及返回值的含义为:

  • image:待检测图像,通常为灰度图像。
  • scaleFactor:表示在前后两次相继的扫描中,搜索窗口的缩放比例。
  • minNeighbors:表示构成检测目标的相邻矩形的最小个数。默认情况下,该值为3,意味着有3个以上的检测标记存在时,才认为人脸存在。如果希望提高检测的准确率,可以将该值设置得更大,但同时可能会让一些人脸无法被检测到。
  • flags:该参数通常被省略。在使用低版本OpenCV(OpenCV 1.X版本)时,它可能会被设置为CV_HAAR_DO_CANNY_PRUNING,表示使用Canny边缘检测器来拒绝一些区域。
  • minSize:目标的最小尺寸,小于这个尺寸的目标将被忽略。
  • maxSize:目标的最大尺寸,大于这个尺寸的目标将被忽略。如果maxSize和minSize大小一致,表示仅在一个尺度上查找目标。通常情况下,将该可选参数省略即可。

objects:返回值,目标对象的矩形框向量组。该值是一组矩形信息,包含了每个检测到的人脸所对应矩形框的(x方向位置、y方向位置、宽度、高度)信息。

代码示例

python 复制代码
# -*- coding: utf-8 -*-
"""
Created on Sat Feb 17 21:09:07 2024

@author: 李立宗

公众号:计算机视觉之光

知识星球:计算机视觉之光

"""

import cv2
# ===============1 原始图像处理====================
image = cv2.imread('manyPeople.jpg')
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
# ================2 加载分类器========================
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# =================3 人脸检测========================
faces = faceCascade.detectMultiScale(
    gray,
    scaleFactor = 1.04,
    minNeighbors = 18,
    minSize = (8,8))
# ===============4 打印输出的实现=====================
print("发现{0}张人脸!".format(len(faces)))
print("其位置分别是:")
print(faces)
# ==================5 标注人脸及显示=======================
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()

检测结果:

学习参考

理解并实现OpenCV中的图像平滑技术

OpenCV中的边缘检测技术及实现

参考文献

1、OpenCV轻松入门

李立宗,OpenCV轻松入门,电子工业出版社,2023

2、计算机视觉40例

李立宗,计算机视觉40例,电子工业出版社,2022

相关推荐
皮皮学姐分享-ppx几秒前
上市公司研发费用分类操纵强度数据(2011—2025)
人工智能·分类·数据挖掘
skywalk8163几秒前
卡不等于分支:我用 TRAE 宝配合 Hive 跑三张任务卡的一天
运维·人工智能·hive·trae
AI宇宙狂想家7 分钟前
开源 AI 视频工具进化史:从难用到好用,OpenMontage 改了什么
开发语言·前端·人工智能·开源·ai创业·openmontage
首席数智官8 分钟前
Agent进入产业,腾讯云重新定义AI生态价值
大数据·人工智能
寻道码路11 分钟前
AI Agent 工程化开发实战(五):持久化与断点恢复——Checkpointer 与 Store
人工智能·大模型·checkpoint·持久化·ai agent·langgraph·ai工程化
愤怒火龙果16 分钟前
AI攻防 AIRT补充篇|侦察指纹 · 多模态越狱 · Agent 与 MCP 安全
网络·人工智能·ai安全
山海鲸可视化18 分钟前
数字孪生项目案例 | 智慧城市IOC可视化
人工智能·数据分析·智慧城市·数字孪生·三维模型
北邮刘老师18 分钟前
智能体手机的成败关键——智能体互联生态
网络·人工智能·智能手机·智能体·智能体互联网
chaoyuanl20 分钟前
超元力玻璃剧场:裸眼3D、8K高清与悬空栈桥的成熟文旅解决方案
大数据·人工智能·3d·xr·vr