利用Python cv2和CNN算法实现人脸识别
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算法实现人脸识别相关推荐
- (转)利用python、tensorflow、opencv实现人脸识别(包会)!
https://blog.csdn.net/qq_42633819/article/details/81191308 一,前言 查看全文 http://www.taodudu.cc/news/show ...
- (含源码)利用Python实现KLT跟踪算法
利用Python实现KLT跟踪算法 NVIDIA 视觉编程接口 (VPI: Vision Programming Interface) 是 NVIDIA 的计算机视觉和图像处理软件库,使您能够实现在 ...
- 使用Python+PCA+SVM算法实现人脸识别模型
在本文中,我们将使用主成分分析和支持向量机来建立人脸识别模型. 首先,让我们了解PCA和SVM是什么: 主成分分析: 主成分分析(PCA)是一种机器学习算法,广泛应用于探索性数据分析和建立预测模型,它 ...
- DL之LSTM/GRU/CNN:基于tensorflow框架分别利用LSTM/GRU、CNN算法对上海最高气温(数据归一化+构造有监督数据集)实现回归预测案例
DL之LSTM/GRU/CNN:基于tensorflow框架分别利用LSTM/GRU.CNN算法对上海最高气温(构造有监督数据集)实现回归预测案例 目录 基于tensorflow框架分别利用LSTM/ ...
- CV之FR:基于DIY人脸图像数据集(每人仅需几张人脸图片训练)利用Hog方法提取特征和改进的kNN算法实现人脸识别并标注姓名(标注文本标签)—(准确度高达100%)
CV之FR:基于DIY人脸图像数据集(每人仅需几张人脸图片训练)利用Hog方法提取特征和改进的kNN算法实现人脸识别并标注姓名(标注文本标签)-(准确度高达100%) 目录 基于DIY人脸图像数据集( ...
- Python与人工智能入门实践——简易人脸识别系统
Python与人工智能入门实践--简易人脸识别系统 写在前面: 笔者在寒假期间进行了一些简短的实训,主要内容包括简单的爬虫和简单的人脸识别算法,由于时间有限,对于python也是第一次详细学习,功能较 ...
- 简单人脸识别一之使用opencv+cnn网络实现人脸识别
最近在研究目标检测这个方向,看到网上有很多的人脸识别帖子,所以也想着上上手看看.当时是做了三个模型出来,第一个就是网上很通用普遍的opencv+简单三层cnn网络来实现的,说实话效果真的一般吧!具体的 ...
- 《人脸识别原理及算法——动态人脸识别系统研究》—1章1.2节人脸识别相关学科的进展...
本节书摘来自异步社区<人脸识别原理及算法--动态人脸识别系统研究>一书中的1章1.2节人脸识别相关学科的进展,作者 沈理 , 刘翼光 , 熊志勇,更多章节内容可以访问云栖社区"异 ...
- 人脸识别三大经典算法_人脸识别系列四 | DeepID1算法
前言 这是人脸识别系列的第5篇文章,前4篇文章可以在公众号的人脸识别栏里找到,这篇文章主要是解析CVPR 2014年的经典人脸识别论文DeepID1算法.论文的地址如下:http://mmlab.ie ...
最新文章
- Desert King POJ - 2728
- 剑指offer(刷题21-30)--c++,Python版本
- mysql多表添加怎么写_mysql多表连接的几种写法
- Python操作redis(普通操作,连接池,封装)
- linux Wi-Fi信号放大,wifi信号增强器
- ue4账号注册不了_UE4入门(一)软件安装教程
- C语言 由拼音字串获取拼音数量
- 用纯Python就能写一个漂亮的网页
- Mermaid语法绘制图表
- 怎样在Mac上查找WiFi密码并在iPhone上共享它?
- PS制作立体效果——圆环
- Unity使用Isometric Z As Y Tilemap创建2.5D地图(三)如何用代码创建Tilemap
- linux中lvm卷管理
- 逆向分析工具-APKtool+dex2jar+jd-gui下载安装
- c语言订单管理,C语言课程设计订单管理系统.doc
- ThinkPad T410加单条8G协德内存条成功
- QNX7.1 交叉编译开源库
- vue中将网页以pdf格式下载
- 来电语音播报软件下载apk_来电播报安卓版下载|来电播报app下载_v1.2.6_9ht安卓下载...
- 从酒鬼失足到赌徒破产,悲剧收场为何注定