快速入手-基于python和opencv的人脸检测

1、安装库

pip install opencv-python

如果下载比较卡的话,指向国内下载地址:

pip3 install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

2、下载源码

https://opencv.org/

windows11对应的版本下载: https://pan.baidu.com/s/1yLt6KYCuycbPYMD1DavYqA?pwd=v4w4 提取码: v4w4

3、安装到制定目录

D:/PythonProject/opencv-4.11.0-install/

4、人脸检测代码

python 复制代码
# 导入cv模块
import cv2 as cv


# 检测函数
def detect_face():
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    face_cascade = cv.CascadeClassifier(
        "D:/PythonProject/opencv-4.11.0-install/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml"
    )
    # faces = face_cascade.detectMultiScale(gray)
    faces = face_cascade.detectMultiScale(gray, 1.05, 5, 0, (50, 50), (300, 300))
    for x, y, w, h in faces:
        cv.rectangle(img, (x, y), (x + w, y + h), color=(255, 0, 0), thickness=2)
    cv.imshow("result_img", img)


# 读取图片
img = cv.imread("mans.jpg")
detect_face()
# 等待
while True:
    if ord("q") == cv.waitKey(0):
        break
cv.waitKey(0)
# 释放内存
cv.destroyAllWindows()

**说明:**detectMultiScale 是 OpenCV 中用于检测图像中目标(如人脸)的函数,通常与 Haar 特征分类器(如 CascadeClassifier )一起使用。本次使用 Haar 分类器检测灰度图像gray中的人脸。以下是 detectMultiScale 函数的详细说明:

detectMultiScale(image, scaleFactor, minNeighbors, flags, minSize, maxSize)

参数说明

  1. image : 输入图像,通常是灰度图像( cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) )。其中image是灰度图像。

  2. scaleFactor :每次图像缩放的比例因子。它用于控制图像金字塔的缩放比例。1.05 表示每次图像缩放的比例为 1.05。较小的值(如 1.05)会检测到更多的小目标,但计算量会增加;较大的值(如 1.2)会检测到较大的目标,但可能会漏掉较小的目标。

  3. minNeighbors : 每个目标的邻近目标数量。这个参数用于控制检测的严格程度。较高的值会减少误检测,但可能会漏掉真实的目标。5 表示每个目标至少需要有 5 个邻近目标。

  4. flags :用于指定检测过程中的一些选项。通常可以设置为 0 或 cv2.CASCADE_SCALE_IMAGE 。0 表示使用默认设置。

  5. minSize :检测目标的最小尺寸(宽和高)。小于这个尺寸的目标将被忽略。(50, 50) 表示最小尺寸为 50×50 像素。

  6. maxSize :检测目标的最大尺寸(宽和高)。大于这个尺寸的目标将被忽略。 (300, 300) 表示最大尺寸为 300×300 像素。

返回值 faces :• 返回一个矩形列表,每个矩形表示检测到的目标(如人脸)的位置。每个矩形是一个包含四个值的元组 (x, y, w, h) ,分别表示矩形的左上角坐标 (x, y) 和矩形的宽度 w 和高度 h 。

5、识别效果

相关推荐
曲幽10 分钟前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码27 分钟前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱10 小时前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵12 小时前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio15 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户03321266636717 小时前
使用 Python 从零创建 Word 文档
python
Csvn21 小时前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽1 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户556918817531 天前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
兵慌码乱2 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2