码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python+OpenCV人脸识别,训练模型



    1.引入库

    代码如下(示例):

    import cv2 as cv
    import os
    import numpy as np
    from PIL import Image

    2.读入数据

    代码如下(示例):

    import cv2 as cv
    import os
    import numpy as np
    from PIL import Image
    
    def train_img(path):
        #调用训练集
        face = cv.CascadeClassifier('haarcascade_frontalface_alt2.xml')
        #图片集
        picture = []
        #标签集
        ids = []
        #图片集合
        Imagepaths = [os.path.join(path, f) for f in os.listdir(path)]
        #循环每一张图片
        for Imagepath in Imagepaths:
            #提取这张图片的id号
            id = int(os.path.split(Imagepath)[1].split('.')[0])
            #将图片转灰
            PIL_img = Image.open(Imagepath).convert('L')
            #将图片转化为uint8
            img_numpy = np.array(PIL_img, 'uint8')
            #提取人脸
            faces = face.detectMultiScale(img_numpy)
    
            for x, y, w, h in faces:
                picture.append(img_numpy[y:y+h, x:x+w])
                ids.append(id)
        return picture, ids
    
    path = 'D://ll//'
    faces, ids = train_img(path)
    recognizer = cv.face.LBPHFaceRecognizer_create()
    recognizer.train(faces, np.array(ids))
    recognizer.write('d:\\train.xml')
    

    3.识别图片

    import cv2 as cv
    recognizer = cv.face.LBPHFaceRecognizer_create()
    recognizer.read('d:\\train.xml')
    def compare_img(img):
        face = cv.CascadeClassifier('haarcascade_frontalface_alt2.xml')
        gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
        faces = face.detectMultiScale(gray)
        for x, y, w, h in faces:
            cv.rectangle(img,(x, y), (x+w, y+h), (0,255,0),2)
            id, picture = recognizer.predict(gray[y:y+h, x:x+w])
            print('图片-->',id,'相似度评分:',picture)
    
        cv.imshow('out', img)
    img = cv.imread('D:\\33.jpg')
    compare_img(img)
    cv.waitKey(0)
    cv.destroyAllWindows()

    总结

    大功告成

  • 相关阅读:
    SpringBoot整合shiro-spring-boot-starterqi
    是什么原因导致自我破坏行为?(你如何停止?
    docker-compose 升级
    移动端日志采集与分析最佳实践
    Axure导入使用ElementUI组件库
    护眼灯哪个牌子更好更专业?2022年高品质护眼台灯推荐
    【Freeradius】使用Freeradius、LDAP和Google Authenticator实现双因素身份验证
    十三、DataFrame表格型数据结构
    网络安全漏洞分析与漏洞复现
    前端面试八股文
  • 原文地址:https://blog.csdn.net/airyearth/article/details/126409582
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号