OpenCV摄像头人脸识别

文章目录


前言

人脸识别是计算机视觉领域最受欢迎的应用之一,广泛应用于安防监控、智能门禁、互动娱乐等场景。本文将通过Python和OpenCV库,实现一个简单的实时摄像头人脸识别程序。


一、导入必要的库

python 复制代码
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont

二、定义函数

1.使用Pillow库在读取画面上添加中文文本

python 复制代码
def cv2AddChineseText(img, text, position, textColor=(0, 255, 0), textSize=30):
    """ 向图片中添加中文 """
    if (isinstance(img, np.ndarray)):  # 判断是否OpenCV图片类型
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))  # 实现array到image的转换
    draw = ImageDraw.Draw(img)  # 在img图片上创建一个绘图的对象
    # 字体的格式
    fontStyle = ImageFont.truetype("simsun.ttc", textSize, encoding="utf-8")
    draw.text(position, text, textColor, font=fontStyle)  # 绘制文本
    return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)  # 转换回OpenCV格式

2.定义一个image_re函数方便我们多次使用

python 复制代码
def image_re(image):
    a = cv2.imread(image, 0)
    a = cv2.resize(a, (120, 180))
    images.append(a)

三、创建模型

python 复制代码
images = [] #将读取的图片装到列表里
image_re('wo.png')
image_re('wo1.png')
image_re('zly1.png')
image_re('zly2.png')

labels = [0, 0, 1, 1]
recognizer = cv2.face.FisherFaceRecognizer_create(threshold=5000)
recognizer.train(images, np.array(labels))

# 加载人脸检测器
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

四、打开摄像头

python 复制代码
# 打开摄像头
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if ret is None:
        break

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

    for (x, y, w, h) in faces:
        face = gray[y:y+h, x:x+w]
        face = cv2.resize(face, (120, 180))
        label, confidence = recognizer.predict(face)
        dic = {0: '我', 1: '赵丽颖', -1: '无法识别'}
        text = dic.get(label, '未知')
        cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
        frame = cv2AddChineseText(frame, text, (x, y-10), textColor=(255, 0, 0))


    cv2.imshow('Face Recognition', frame)

    if cv2.waitKey(1) == 27:
        break

cap.release()
cv2.destroyAllWindows()

完毕

相关推荐
ziwu9 分钟前
【民族服饰识别系统】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积网络+resnet50算法
人工智能·后端·图像识别
ziwu24 分钟前
【卫星图像识别系统】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积网络+resnet50算法
人工智能·tensorflow·图像识别
ISACA中国29 分钟前
ISACA与中国内审协会共同推动的人工智能审计专家认证(AAIA)核心内容介绍
人工智能·审计·aaia·人工智能专家认证·人工智能审计专家认证·中国内审协会
ISACA中国44 分钟前
《第四届数字信任大会》精彩观点:针对AI的攻击技术(MITRE ATLAS)与我国对AI的政策导向解读
人工智能·ai·政策解读·国家ai·风险评估工具·ai攻击·人工智能管理
Coding茶水间1 小时前
基于深度学习的PCB缺陷检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·计算机视觉
绫语宁1 小时前
以防你不知道LLM小技巧!为什么 LLM 不适合多任务推理?
人工智能·后端
霍格沃兹测试开发学社-小明1 小时前
AI来袭:自动化测试在智能实战中的华丽转身
运维·人工智能·python·测试工具·开源
大千AI助手1 小时前
Softmax函数:深度学习中的多类分类基石与进化之路
人工智能·深度学习·机器学习·分类·softmax·激活函数·大千ai助手
韩曙亮1 小时前
【人工智能】AI 人工智能 技术 学习路径分析 ② ( 深度学习 -> 机器视觉 )
人工智能·深度学习·学习·ai·机器视觉
九千七5261 小时前
sklearn学习(3)数据降维
人工智能·python·学习·机器学习·sklearn