Face-recognition实现人脸识别

文章目录

    • 1.前置知识点
      • (1)Opencv中矩形,绘制文本
      • (2)Opencv中基础的知识点
      • (3)face_recognition.face_locations(img1ToRGB)
      • (4)face_recognition.face_encodings(img1ToRGB,img1Face)
      • (5)face_recognition.compare_faces(encodeings,face_encoding)
      • (6)face_recognition.face_distance(encodeings,face_encoding)
    • 2.正文
      • (1)首选读取“库”中的图片
      • (2)对读取的所有图片进行编码

1.前置知识点

(1)Opencv中矩形,绘制文本

https://mydreamambitious.blog.csdn.net/article/details/125392536

(2)Opencv中基础的知识点

https://mydreamambitious.blog.csdn.net/article/details/125351256

(3)face_recognition.face_locations(img1ToRGB)

face_locations(img, number_of_times_to_upsample=1, model="hog")

img: 是一个 numpy.array 指定要查找人脸位置的图像矩阵;
number_of_times_to_upsample: 指定要查找的次数;默认值为1;
model :指定查找的模式 'hog' 不精确但是在CPU上运算速度快 'CNN' 是一种深度学习的精确查找,但是速度慢。需要GPU/CUDA加速;
返回 值为人脸的位置 list  (top, right, bottom, left)

(4)face_recognition.face_encodings(img1ToRGB,img1Face)

face_encodings(face_image, known_face_locations=None, num_jitters=1, model="small")

face_image :指定数据类型为numpy.array编码的人脸矩阵数据类型;
known_face_locations: 指定人脸位置 如果值为None 则默认按照 'Hog'模式 调用 _raw_face_locations 查找人脸位置;
num_jitters: 重新采样编码次数 默认为1 ;
model: 预测人脸关键点个数 large 为68个点 small 为 5个关键点,使用small更快;
返回 128维特征向量 list。

(5)face_recognition.compare_faces(encodeings,face_encoding)

compare_faces(known_face_encodings, face_encoding_to_check, tolerance=0.6)

known_face_encodings:  已经编码的人脸 list
face_encoding_to_check :要检测的单个人脸
tolerance: 默认人脸对比距离长度对比方式np.linalg.norm(face_encodings - face_to_compare, axis=1)
返回值为 对比结果 list(如果匹配则为True,否则为false)

(6)face_recognition.face_distance(encodeings,face_encoding)

face_distance(face_encodings, face_to_compare)

face_encodings:要比较的面部编码列表;
face_to_compare:要进行比较的面部编码列表。
返回值:要进行比较的面部和列表中的面部编码的距离。

2.正文

(1)首选读取“库”中的图片

这里的“库”可以是指一个文件夹,文件夹下面包含了要进行编码的图片。
在这里插入图片描述

import os
import cv2
import cvzone
import numpy as np
import face_recognition
from datetime import datetimeimg_path='imgFaces'
images=[]
#保存文件名,也就是图像中人物的名称
classNames=[]
#列出文件夹下的所有图片
myList=os.listdir(img_path)
# print(myList)
for pic in myList:img=cv2.imread(f'{img_path}/{pic}')images.append(img)classNames.append(os.path.splitext(pic)[0])

(2)对读取的所有图片进行编码

# print(classNames)
def findEncodeings(images):encodeList=[]for img in images:img=cv2.cvtColor(src=img,code=cv2.COLOR_BGR2RGB)encode=face_recognition.face_encodings(img)[0]encodeList.append(encode)return encodeList
encodeListKnown=findEncodeings(images)

(3)打开摄像头进行人脸识别

cap=cv2.VideoCapture(0)
while cap.isOpened():ret,frame=cap.read()frame=cv2.resize(src=frame,dsize=(750,600))frameRGB=cv2.cvtColor(src=frame,code=cv2.COLOR_BGR2RGB)#对摄像头读取的检测人脸facesLocate=face_recognition.face_locations(frameRGB)#进行特征编码faceEncoded=face_recognition.face_encodings(frameRGB,facesLocate)#遍历检测的人脸和库中读取的图片进行对比,计算其相似度for (top,right, bottom,left),face_encoding in zip(facesLocate,faceEncoded):#进行匹配matchs=face_recognition.compare_faces(encodeListKnown,face_encoding)#计算相似度distance=face_recognition.face_distance(encodeListKnown,face_encoding)min_distanceIndex=np.argmin(distance)#判断是否匹配name='Unknow'if matchs[min_distanceIndex]:name=classNames[min_distanceIndex]cv2.rectangle(img=frame,pt1=(left,top),pt2=(right,bottom),color=(0,255,0),thickness=3)cvzone.putTextRect(img=frame,text=name,pos=(left+3,top-10),scale=1,thickness=2,colorR=(0,255,0))cv2.imshow('frame',frame)key=cv2.waitKey(1)if key==27:break
cap.release()
cv2.destroyAllWindows()

注意这里是人脸识别,不是人脸检测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12507.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人脸检测之CenterFace

论文:CenterFace: Joint Face Detection and Alignment Using Face as Point Github:https://github.com/Star-Clouds/CenterFace 论文基于centerNet进行改进,提出了anchor free形式的人脸检测框架,可以同时实现人脸检测关键点检…

chatgpt赋能python:Python人脸识别:从入门到工程实践

Python人脸识别:从入门到工程实践 介绍 近年来,人脸识别技术越来越成熟,广泛应用于各行各业,如社交媒体、安防、金融等领域。Python人脸识别作为一种基于机器学习的技术,可以通过训练模型从图像中自动识别出人脸,并进…

chatgpt赋能python:Python人脸身份识别:提高安全性和效率的先进技术

Python人脸身份识别:提高安全性和效率的先进技术 随着科技的发展,人类对于安全性和效率的需求逐渐增加。而人脸身份识别技术正是一个能够满足这一需求的先进技术。在过去的几年中,这种技术已经逐渐发展成为一种普及的安全措施,这…

人脸识别之特征脸方法(Eigenface)

人脸识别之特征脸方法(Eigenface) zouxy09qq.com http://blog.csdn.net/zouxy09 因为需要,花了一点时间写了下经典的基于特征脸(EigenFace)的人脸识别方法的Matlab代码。这里仅把该代码分享出来。其实,在…

face_recognition 人脸识别

前言 之前实践了下face在线人脸识别版本,这回做一下离线版本。github 上面有关于face_recognition的相关资料,本人只是做个搬运工,对其中的一些内容进行搬运,对其中一些例子进行实现。 官方描述: face_recognition …

chatgpt赋能python:Python人脸追踪:技术介绍与应用

Python人脸追踪:技术介绍与应用 Python作为一门极为流行的编程语言,其在人工智能领域的应用也不断得到拓展和应用,其中Python人脸追踪技术已经成为广泛应用的一个领域。本篇文章将介绍Python人脸追踪技术的原理和应用,以便读者更…

face_recognition结合opencv进行多人脸识别

目录 step1:准备好opencv,numpy和face_recognition三个库 step2:准备好人脸图像 step3:利用opencv读取三张图片 step4:将图片转为特征向量,并将向量和名字添加到列表中,一一对应 step5&#…

chatgpt赋能Python-python人脸识别步骤

简介 Python是一种优秀的编程语言,它广泛应用于人工智能、数据科学、Web应用程序开发等领域。其中,人脸识别是Python应用程序中的重要一环。 本文将介绍Python人脸识别的具体步骤,希望对初学者有所帮助。 Python人脸识别步骤 安装必要的库…

chatgpt赋能Python-python3人脸识别

人脸识别的python3应用:一步步实现高精度的面部识别 Python3作为一种高效的编程语言,具有广泛的应用场景。近年来,人脸识别技术在安防、金融、医疗等领域中逐渐普及,运用Python3进行人脸识别具有巨大的潜力。本文将介绍如何使用P…

万字科普ChatGPT-4为何会颠覆人类社会

来源:图灵人工智能 视频来源:超智能体 视频是关于GPT的底层原理和未来影响。将抛开技术细节,少用专业名词,在整体功能上讲解 ChatGPT 的「工作原理」「制造过程」「涌现的能力」「未来的影响」以及「如何应对」: 1、Ch…

断案三字诀

2019独角兽企业重金招聘Python工程师标准>>> 孟一刀:断案三字诀 2012-11-20 孟黎明,1973年6月生,1992年8月起至今在法院工作,曾任安吉法院调解中心主任、民一庭庭长,现任院党组成员、纪检组长。2010年2月…

科研如断案

最近我又把《神探狄仁杰》第一部看完了,觉得确实很不错。狄仁杰身为一朝宰相,拥有“一人之下,万人之上”的权力。他始终以百姓的安居乐业和天下的兴亡为己任。在电视剧里面,他与坏人斗智斗勇,时时险象环生,…

c语言经典断案程序、杨辉三角程序、跳水概率程序

/* 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后…

蓝桥杯07 java 断案

题目描述 公安人员审问甲、乙、丙、丁四个嫌疑犯,已确知,这四个人当中仅有一人是偷窃者,还知道这四个人的答话,要么完全诚实,要么完全说谎。在回答公安人员的问话中: 甲说:“乙没有偷&#xf…

试题 算法提高 断案

问题描述   公安人员审问甲、乙、丙、丁四个嫌疑犯,已确知,这四个人当中仅有一人是偷窃者,还知道这四个人的答话,要么完全诚实,要么完全说谎。在回答公安人员的问话中:   甲说:“乙没有偷&a…

论文投稿指南——中国(中文EI)期刊推荐(第6期)

🚀 EI是国际知名三大检索系统之一,在学术界的知名度和认可度仅次于SCI!🎄🎈 【前言】 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊。其中&#xf…

关于网页版chatgpt喂投的一些讲解

ChatGPT云炬学长 喂投的定义及使用场景: 这一部分主要是解决这三个问题:啥是喂投。我们为什么要喂投。以及什么场景下面会用到喂投。 从AI专业名词的角度来说,并不存在“喂投”这么一个行为,这是一个不太专业化的俗称&#xff…

老马闲评数字化(4)做数字化会不会被供应商拿捏住

“老马闲评数字化”系列文章正在“深圳行云创新”公众号连载,感兴趣的朋友请关注我们的公众号,不迷路…… 导语 开年过后业务特别的繁忙,出差也比较多,所以有段时间没更新了,对不住大家! 上一集&#xff08…

被遗忘的技术支持岗位

文/明道云创始人任向晖 我发现一个现象。在我们行业,谈论营销获客、销售增长、产品思维等话题的文章很多,但是谈论技术支持(Technical Support)话题的文章几乎没有。似乎我们行业根本没有这个职能一样。在企业内部,技术…

《软件工程导论》期末复习总结

《软件工程导论》期末复习总结 适用教材:《软件工程与实践(第3版》,贾铁军、李学相、王学军主编,清华大学出版社 提示:与教材内容不完全匹配,有所取舍。 写在前面: 这份复习总结是笔者根据老师…