https://github.com/WhyEastOne/face_recognization

本代码在参考了该大神的一篇博客,里面讲解很详细,包括环境安装和算法,膜拜。。。https://blog.csdn.net/qq_42633819/article/details/81191308

本人在此基础上实现了自动匹配人类别并把姓名显示在图像上,仅供参考

1、读取包含各个人的文件夹:

labels = np.array(LabelEncoder().fit_transform(labels))#进行编码

#从指定路径读取训练数据
def load_dataset(path_name):images,labels = read_path(path_name)    #将输入的所有图片转成四维数组,尺寸为(图片数量*IMAGE_SIZE*IMAGE_SIZE*3)#我和闺女两个人共1200张图片,IMAGE_SIZE为64,故对我来说尺寸为1200 * 64 * 64 * 3#图片为64 * 64像素,一个像素3个颜色值(RGB)images = np.array(images)print(images.shape)    #标注数据,'WHY'文件夹下都是我的脸部图像,全部指定为0,另外一个文件夹下,全部指定为1#labels = np.array([0 if label.endswith('WHY') else 1 for label in labels])labels = np.array(LabelEncoder().fit_transform(labels))#进行编码return images, labels

2、在训练时自动读取类别数量

class Dataset:def __init__(self, path_name):#训练集self.train_images = Noneself.train_labels = None#验证集self.valid_images = Noneself.valid_labels = None#测试集self.test_images  = None            self.test_labels  = None#数据集加载路径self.path_name    = path_name#当前库采用的维度顺序self.input_shape = None#类别数量self.nb_classes = None

#类别数量
        self.nb_classes = None

下面加载数据时也要定义类别,以供下面模型构建时传入。

3、在预测时匹配人名显示在图像上,下面这个函数即参考读取文件夹的思想,把图片对应标签存入labels变量:

#-------------------------获取图片对应的标签------------------------------------
import os
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
path_name = './face_detect_database/data'
labels = []
def read_path(path_name):  #读取类别,以便下面进行图像文字匹配  
    for dir_item in os.listdir(path_name):
        #从初始路径开始叠加,合并成可识别的操作路径
        full_path = os.path.abspath(os.path.join(path_name, dir_item))
        
        if os.path.isdir(full_path):    #如果是文件夹,继续递归调用
            read_path(full_path)
        else:   #文件
            if dir_item.endswith('.jpg') or dir_item.endswith('.png'):               
                if path_name not in labels: 
                    labels.append(path_name) 
    return labels
labels = read_path(path_name)
labels = [name.split('\\')[-1] for name in labels]

读取视频中人脸并基于labels匹配显示姓名在图像上:

#文字提示是谁
cv2.putText(frame,'%s'%labels[faceID], 
          (x + 30, y + 30),                                            #坐标
           cv2.FONT_HERSHEY_SIMPLEX,              #字体
           1,                                                                 #字号
            (255,0,255),                                                #颜色
             2)

4、识别结果如下,每个人图片都各自简历文件夹,最好图片数量多,本次图片数量较少,匹配相对不是很准确,偶尔需要匹配几次才能匹配成功,离摄像头的距离远近以对识别效果也有一定影响

利用Python cv2和CNN算法实现人脸识别相关推荐

  1. (转)利用python、tensorflow、opencv实现人脸识别(包会)!

    https://blog.csdn.net/qq_42633819/article/details/81191308 一,前言 查看全文 http://www.taodudu.cc/news/show ...

  2. (含源码)利用Python实现KLT跟踪算法

    利用Python实现KLT跟踪算法 NVIDIA 视觉编程接口 (VPI: Vision Programming Interface) 是 NVIDIA 的计算机视觉和图像处理软件库,使您能够实现在 ...

  3. 使用Python+PCA+SVM算法实现人脸识别模型

    在本文中,我们将使用主成分分析和支持向量机来建立人脸识别模型. 首先,让我们了解PCA和SVM是什么: 主成分分析: 主成分分析(PCA)是一种机器学习算法,广泛应用于探索性数据分析和建立预测模型,它 ...

  4. DL之LSTM/GRU/CNN:基于tensorflow框架分别利用LSTM/GRU、CNN算法对上海最高气温(数据归一化+构造有监督数据集)实现回归预测案例

    DL之LSTM/GRU/CNN:基于tensorflow框架分别利用LSTM/GRU.CNN算法对上海最高气温(构造有监督数据集)实现回归预测案例 目录 基于tensorflow框架分别利用LSTM/ ...

  5. CV之FR:基于DIY人脸图像数据集(每人仅需几张人脸图片训练)利用Hog方法提取特征和改进的kNN算法实现人脸识别并标注姓名(标注文本标签)—(准确度高达100%)

    CV之FR:基于DIY人脸图像数据集(每人仅需几张人脸图片训练)利用Hog方法提取特征和改进的kNN算法实现人脸识别并标注姓名(标注文本标签)-(准确度高达100%) 目录 基于DIY人脸图像数据集( ...

  6. Python与人工智能入门实践——简易人脸识别系统

    Python与人工智能入门实践--简易人脸识别系统 写在前面: 笔者在寒假期间进行了一些简短的实训,主要内容包括简单的爬虫和简单的人脸识别算法,由于时间有限,对于python也是第一次详细学习,功能较 ...

  7. 简单人脸识别一之使用opencv+cnn网络实现人脸识别

    最近在研究目标检测这个方向,看到网上有很多的人脸识别帖子,所以也想着上上手看看.当时是做了三个模型出来,第一个就是网上很通用普遍的opencv+简单三层cnn网络来实现的,说实话效果真的一般吧!具体的 ...

  8. 《人脸识别原理及算法——动态人脸识别系统研究》—1章1.2节人脸识别相关学科的进展...

    本节书摘来自异步社区<人脸识别原理及算法--动态人脸识别系统研究>一书中的1章1.2节人脸识别相关学科的进展,作者 沈理 , 刘翼光 , 熊志勇,更多章节内容可以访问云栖社区"异 ...

  9. 人脸识别三大经典算法_人脸识别系列四 | DeepID1算法

    前言 这是人脸识别系列的第5篇文章,前4篇文章可以在公众号的人脸识别栏里找到,这篇文章主要是解析CVPR 2014年的经典人脸识别论文DeepID1算法.论文的地址如下:http://mmlab.ie ...

最新文章

  1. Quartz.NET基础知识概述
  2. java 获取资源,Java资源获取
  3. Leet Code OJ 172. Factorial Trailing Zeroes [Difficulty: Easy]
  4. 如何运行ruby代码
  5. 时间同步失败_关于同步、异常处理的思考
  6. 这家简历大数据公司被“一锅端” 或因私自抓取用户简历:曾获李开复投资
  7. ActiveMQ学习总结(1)——ActiveMQ快速入门
  8. java.net.URISyntaxException: Illegal character in query at index,http请求url中有非法字符导致
  9. LeafGAN:一种有效的实用植物病害诊断数据扩充方法
  10. php flea,FleaPHP - 开发框架 - PHP开源网(PHP-OPEN.ORG)
  11. 高斯光束及其MATLAB仿真
  12. STL库中常用的数据结构
  13. Vs2010中文版MSDN 安装方法
  14. Selenium Grid使用
  15. Cash-secured Puts
  16. fabs () 函数
  17. Geometry-guided Kernel Transformer ——GKT代码复现
  18. 微信分享小功能后端接口简单实现
  19. 未成熟男人; 成熟男人
  20. 引入html5,html5-css的引入

热门文章

  1. java 百度人脸识别接口调用配置
  2. Ncnn框架在c++的推理及其认识
  3. 一个SQL审核不通过引发的思考
  4. QTP的那些事--最新特性总结和支持chrome浏览器
  5. 计算机总评成绩的函数,一种高效的计算机自动组卷策略的研究
  6. Python识别验证码----谷歌reCapture 3*3验证码
  7. linux crontab 定时关机,Linux系统使用--定时关机的实现以及crontab命令和文件详解...
  8. 从油漆罐到协作型BPM
  9. 自学Unity能找到工作吗
  10. Dota刀塔自走棋,《下棋阵容助手》微信小程序