精华内容
下载资源
问答
  • OpenCV人脸识别

    2017-08-11 15:45:56
    OpenCV人脸识别
  • opencv人脸识别

    2016-08-24 21:00:37
    opencv人脸识别
  • openCV人脸识别

    2018-06-25 09:08:50
    openCV人脸识别,识别图片中的人脸是谁,用的是openCV3.4.1和机器学习,采用本地静态图片识别,识别的时候不需要联网。里面还没有实现年龄、性别的识别。 环境: Android Studio:3.1.2 Gradle:distributionUrl=...
  • opencv 人脸识别

    2018-06-04 19:07:49
    opencv人脸识别代码,有眼镜无法识别,最基本的人脸识别方式。
  • python opencv 人脸识别人脸识别个人理解就是分几个步骤,1 找素材,让程序学习得到不同人的不同人脸特点,2,传入图片开始识别这里先展示一下文件目录test_data是测试人脸的图片,images里有两个文件夹,每一个...

    python opencv 人脸识别

    人脸识别个人理解就是分几个步骤,1 找素材,让程序学习得到不同人的不同人脸特点,2,传入图片开始识别

    这里先展示一下文件目录

    test_data是测试人脸的图片,images里有两个文件夹,每一个文件夹对应着一个人,里面都是那个人的人脸图像

    使用opencv开发人脸识别,首先下载对应的包

    pip install opencv-python

    pip install opencv-contrib-python

    然后开始上代码

    # # -*- coding:utf-8 -*-

    import cv2

    import os

    import numpy as np

    # 检测人脸

    def detect_face(img):

    # 将测试图像转换为灰度图像,因为opencv人脸检测器需要灰度图像

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 加载OpenCV人脸检测分类器Haar

    face_cascade = cv2.CascadeClassifier('./xml/haarcascade_frontalface_default.xml')

    # 检测多尺度图像,返回值是一张脸部区域信息的列表(x,y,宽,高)

    face = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5)

    # 如果未检测到面部,则返回原始图像

    if len(face) > 0:

    # 目前假设只有一张脸,xy为左上角坐标,wh为矩形的宽高

    (x, y, w, h) = face[0]

    # 返回图像的正面部分

    return gray[y:y + w, x:x + h], face[0]

    else:

    return None, None

    # 该函数将读取所有的训练图像,从每个图像检测人脸并将返回两个相同大小的列表,分别为脸部信息和标签

    def prepare_training_data(data_folder_path):

    # 获取数据文件夹中的目录(每个主题的一个目录)

    dirs = os.listdir(data_folder_path)

    # 两个列表分别保存所有的脸部和标签

    faces = []

    labels = []

    # 浏览每个目录并访问其中的图像

    for dir_name in dirs:

    # dir_name(str类型)即标签

    label = int(dir_name)

    # 建立包含当前主题主题图像的目录路径

    subject_dir_path = data_folder_path + "/" + dir_name

    # 获取给定主题目录内的图像名称

    subject_images_names = os.listdir(subject_dir_path)

    # 浏览每张图片并检测脸部,然后将脸部信息添加到脸部列表faces[]

    for image_name in subject_images_names:

    # 建立图像路径

    image_path = subject_dir_path + "/" + image_name

    # 读取图像

    image = cv2.imread(image_path)

    # 显示图像0.1s

    cv2.imshow("Training on image...", image)

    cv2.waitKey(100)

    # 检测脸部

    face, rect = detect_face(image)

    # # 我们忽略未检测到的脸部

    if face is not None:

    # 将脸添加到脸部列表并添加相应的标签

    faces.append(face)

    labels.append(label)

    cv2.waitKey(1)

    cv2.destroyAllWindows()

    # 最终返回值为人脸和标签列表

    return faces, labels

    # 调用prepare_training_data()函数

    faces, labels = prepare_training_data("images")

    # 创建LBPH识别器并开始训练,当然也可以选择Eigen或者Fisher识别器

    face_recognizer = cv2.face.LBPHFaceRecognizer_create()

    face_recognizer.train(faces, np.array(labels))

    # 根据指定的坐标和宽高在图片上绘制矩形

    def draw_rectangle(img, rect):

    (x, y, w, h) = rect

    cv2.rectangle(img, (x, y), (x + w, y + h), (128, 128, 0), 2)

    # 根据给定的(x,y)坐标标识出人名

    def draw_text(img, text, x, y):

    cv2.putText(img, text, (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, (128, 128, 0), 2)

    # 建立标签和人名的映射表

    subjects = ["yangmi", "liuyifei"]

    def predict(test_img):

    # 生成图片的副本,这样就可以保留原始图片

    img = test_img.copy()

    # 检测人脸

    face, rect = detect_face(img)

    print(face)

    print(rect)

    # 预测人脸

    label = face_recognizer.predict(face)

    print(label)

    # 判断是否识别成功

    if label:

    # 获取由人脸识别器返回的相应的标签名称

    label_text = subjects[label[0]]

    # 在检测到的脸部周围绘制一个矩形

    draw_rectangle(img, rect)

    # 标出预测的名字

    draw_text(img, label_text, rect[0], rect[1] - 5)

    # 返回预测图像

    return img

    # else:

    # print(img)

    # # 在检测到的脸部周围绘制一个矩形

    # draw_rectangle(img, rect)

    # # 标出预测的名字

    # draw_text(img, "unkonwn", rect[0], rect[1] - 5)

    # # 返回预测图像

    # return img

    test_img1 = cv2.imread("test_data/5.jpg")

    test_img2 = cv2.imread("test_data/6.jpg")

    predicted_img1 = predict(test_img1)

    predicted_img2 = predict(test_img2)

    cv2.imshow(subjects[0], predicted_img1)

    cv2.imshow(subjects[1], predicted_img2)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

    最后结果为

    这个是识别率很低很低

    展开全文
  • OPencv人脸识别

    2019-04-23 15:40:09
    7.07-人脸识别算法之EigenFace-02$ V1 S1 L% u' ^+ q. |( I 8.08-人脸识别算法之FisherFace! i- s( D C: Z 9.09-人脸识别算法之LBPH 10.10-案例-实时人脸识别应用开发-01 11.11-案例-实时人脸识别应用开发-024 j#
  • 基于python opencv人脸识别的员工考勤系统

    万次阅读 多人点赞 2018-09-22 17:16:10
    #@[TOC](基于python opencv人脸识别的员工考勤系统) WorkAttendanceSystem 一个基于opencv人脸识别的员工考勤系统 ##工程简介 写于2018/09/,python课设期间; ##项目结构 mainui.py是主界面,调用face_img_...

    WorkAttendanceSystem

    一个基于opencv人脸识别的员工考勤系统,作者某双一流A类大学里的一流学生,写于2018/09/,python课设期间。

    源代码详细解释请关注微信公众号: 月小水长

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0tD0MTSs-1586508688861)(https://img.shields.io/badge/opencv-cv2-green.svg)]

    作者 inspurer
    QQ交流群 861016679
    个人博客 https://inspurer.github.io/

    🐬V1.0

    项目结构

    mainui.py是主界面,调用face_img_register.py和face_recognize_punchcard.py
    其中face_img_register.py是录入人脸信息,face_recognize_punchcard.py是刷脸考勤
    face_feature_storage.py属于鸡肋文件,没什么用,舍不得删,毕竟有点参考价值。
    face_recognize_punchcard_lib.py和face_recognize_punchcard.py本质上差不多,
    但是前者是给face_img_register.py专有的依赖。防止录入两个同样的人脸建不同数据库的风险。

    运行效果

    1. 主界面

    2. 人脸录入

    3. 刷脸考勤

    其余的就不多做展示了,有什么问题欢迎2391527690@qq.com联系


    更新

    2018/9/23更新

    mainui.py–>myapp.py
    face_recognize_punchcard_lib.py等鸡肋文件放到useless文件夹里
    运行效率显著提高

    2018/9/25更新

    解决同步性问题,新录入的人脸能立即被识别
    代码的运行速度少许下降

    🐬V2.0

    1. 全新设计的UI,更人性化的操作


    删图删图删图

    2. 数据更加安全,用户不可见

    人脸数据和签到日志全部保存在inspurer.db数据库文件里,更加安全;而且对人脸数据进行了压缩,更加小巧。

    3. 注意事项

    1. 打开摄像头时请左右晃动一下人脸,确保人脸识别开始。
    2. 人脸识别时做了拒绝处理,多张人脸时,只取距离屏幕最近的人脸。
    3. 新建录入时会自动录入十张人脸照片,也可手动点击完成录入立即完成,之后就会计算人脸数据并存储到数据库中,
      左边的信息栏会有相应的信息打印。
    4. 开始签到后,如不点击结束签到,就会一直对屏幕前的人脸进行签到,签到状态分三种,未识别的人脸,签到成功,
      签到成功但是迟到了(9.00后签到),重复签到(此时签到日志不会写入到数据库。
    5. 为确保程序稳定性,每一个菜单里的按钮尽量成对操作。

    Thanks for your attention;can you fork it if helping you? Thanks again
    CopyRight 2391527690@qq.com;send me for allowance if you want to transmit it

    源代码地址

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,815
精华内容 3,126
关键字:

opencv人脸识别