【OpenCV】⚠️实战⚠️ 人脸识别 ☢️建议手收藏☢️

举报
我是小白呀iamarookie 发表于 2021/09/09 22:22:12 2021/09/09
【摘要】 【OpenCV】⚠️实战⚠️ 人脸识别 ☢️建议手收藏☢️ 概述模型获取detectMultiScale图片人脸识别视频人脸识别 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语...

【OpenCV】⚠️实战⚠️ 人脸识别 ☢️建议手收藏☢️

概述

OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家来实战一下, 用 OpenCV 实现人脸识别.

在这里插入图片描述

模型获取

模型下载地址

detectMultiScale

格式:

cv2.detectMultiScale(self, image, scaleFactor=None, minNeighbors=None, flags=None, minSize=None, maxSize=None)

  
 
  • 1

参数:

  • image: 输入图像, 灰度图
  • scaleFactor: 图像尺寸缩小比例, 决定两个不同大小的窗口扫描之间有多大的跳跃
  • minNeighbors: 被检测到几次才算目标
  • minSize: 目标最小尺寸
  • maxSize: 目标最大尺寸

图片人脸识别

原图:

在这里插入图片描述
代码:

import cv2


def face_detect(image):
    # 转换成灰度图
    image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 实例化
    face_detector = cv2.CascadeClassifier(
        "C:/Users/Windows/Desktop/face/haarcascades/haarcascade_frontalface_alt_tree.xml")
    faces = face_detector.detectMultiScale(image_gray, 1.05, 3)

    # 遍历每个人脸
    for x, y, w, h in faces:
        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 5)

    return image

if __name__ == "__main__":
    # 读取图片
    image = cv2.imread("face.jpg")

    # 人脸检测
    result = face_detect(image)

    # 图片展示
    cv2.imshow("result", image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    # 保存结果
    cv2.imwrite("result.jpg", result)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

输出结果:

在这里插入图片描述

视频人脸识别

代码:

import cv2


def face_detect(image):
    # 转换成灰度图
    image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 实例化
    face_detector = cv2.CascadeClassifier(
        "C:/Users/Windows/Desktop/face/haarcascades/haarcascade_frontalface_alt_tree.xml")
    faces = face_detector.detectMultiScale(image_gray, 1.01, 1)

    # 遍历每个人脸
    for x, y, w, h in faces:
        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 5)

    return image


if __name__ == "__main__":

    # 读取视频
    capture = cv2.VideoCapture(0)

    # 循环
    while (True):

        # 读取一帧
        ret, frame = capture.read()
        frame = cv2.flip(frame, 1)
        result = face_detect(frame)

        # 显示
        cv2.imshow("frame", result)

        # q键退出
        if cv2.waitKey(1) & 0XFF == ord("q"):
            break

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。

原文链接:iamarookie.blog.csdn.net/article/details/119408985

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。