5 调用opencv模块实现人脸识别

调用opencv模块实现人脸识别

注:为更清楚的讲解,没有对方法进行封装,在生产环境中请按策略进行封装

import WosLikeMe
Similarity = WosLikeMe.main(1308002****, 'https://****.oss-cn-beijing.aliyuncs.com/temp/faceTest/3.jpg')
print(Similarity)
#!/usr/bin/python3
# -*- coding: UTF-8 -*-

import numpy as np
from PIL import Image
import os
import cv2
import config
import WosDownload
import WosGetFace

def main(userId, image):
    src = cv2.__file__
    src = src.replace('__init__.py', '', 1) + 'data/'
    recognizer = cv2.face.LBPHFaceRecognizer_create()

    # 加载训练模型
    recognizer.read(config.__trainer__path + '/' + str(userId) + '.yml')

    face_detector = cv2.CascadeClassifier(src + 'haarcascade_frontalface_default.xml')

    # 下载image
    face = WosDownload.main(image)[0]

    # 读取新人脸
    newFace = cv2.imread(face)
    gray = cv2.cvtColor(newFace, cv2.COLOR_RGB2GRAY)
    faces = face_detector.detectMultiScale(gray, 1.3, 5)
    faceCount = format(len(faces))

    if faceCount == 0:
        print("ERR: This Image not face", userId)
        return False

    resultArray = []  # 如果在图片中识别很多个人脸,检测结果都存到数组中
    maxResult = 0  # 最终数组中最大数为检测结果
    for (x, y, w, h) in faces:
        idnum, confidence = recognizer.predict(gray[y:y + h, x:x + w])
        if confidence < 100:
            resultArray.append(confidence)
        else:
            resultArray.append(0)
    print(resultArray)
    for r in resultArray:
        if r > 0:
            maxResult = int(r)
    # 如果有大于80的人脸信息,进行二次训练
    # 保存头像
    if maxResult > 80 : # 80建议在config中设置,或者根据用户头像图片数量适当提升这个值
    	WosGetFace(userId, image)
    # 进行训练
    return maxResult

专栏文章目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wos.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值