付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Dragonboard410c的智能魔镜设计(5)——通过人脸进行用户身份识别根据前面的设计方案,在设计的基于dragonboard410c的智能魔镜中,需要根据超声波检测到有人靠近的时候,通过USB摄像头采集人脸数据,然后根据数据库中的人脸数据进行人脸匹配,识别用户的身份,最终根据用户身份显示不同的消息和推送不同的内容,这期blog将重点向大家介绍智能魔镜中的人脸检测和识别处理实现的原理和过程。需要进行基于人脸的用户身份识别,首先需要检测出人脸,然后根据检测出来的人脸与数据库中的人脸进行匹配,最终得出匹配度,根据匹配度确定该人脸的身份,这里将从这两个方面来向大家介绍如何在智能魔镜中实现人脸身份检测,其实在前面的一系列blog中已经给大家介绍了人脸识别和检测的实现方法,这里就在结合智能魔镜代码设计再向大家如何应用前面已经设计好的人脸检测和识别的代码,将其集中到智能魔镜中的应用中来。在基于USB摄像头人脸识别的文章中已经告诉了大家如使用Python和OpenCV来何构建人脸检测代码,我们这里构建了一个getFac.py文件,在该文件中通过getFac类来实现人脸的检测,其实也就是对前面blog方法的一次封装即可,具体代码如下:
defgetface(self,device):
cap=cv2.VideoCapture(device)
faces=[]
num=self.maxFrames
while(True):
ret,img=cap.read()
ret,img=cap.read()
ret,img=cap.read()
ret,img=cap.read()
ifret==True:
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces=self.face_cascade.detectMultiScale(gray,1.3,5)
i=0
for(x,y,w,h)infaces:
face=img[y:y+h,x:x+w]
print("getfacesucessful")
cap.release()
cv2.imwrite('./temp.jpg',face)
returnTrue
num=num-1
ifnum==0:
print("getfacefailed")
cap.release()
returnFalse
else:
cap.release()
returnFalse
有了上述类,我们就可以检测并且获得人脸图像,接下来我们需要利用检测到的人脸图像,与数据库中的人脸图像进行匹配,实现人脸的识别,其方法和前面使用USB摄像头进行人脸识别文章--第二篇中的方法一样,采用opencv提供的人脸识别接口来实现,但是这里为了在魔镜中调用,重写了前面blog的方法,构建了一个peopleIdentification.py类来实现魔镜中的人脸身份检测,这里封装了一个peopleDetected类来实现人脸的身份识别,重新封装后的代码和前面代码稍有差异,具体设计如下:
classpeopleDetected:
def__init__(self,trainImgPath):
self.threshold=6000
self.model=cv2.createFisherFaceRecognizer()
self.trainModel('./usrImg')
#loadalluserimgcreateTraintable
#imgPathisuserimgpath
deftrainModel(self,trainImgPath):
names=[]
lables=[]
userImgDir=os.listdir(trainImgPath)
#print(userImgDir)
forimgDirinuserImgDir:
print("userIDdiris:")
#print(imgDir)
format="%s/%s"
values=(trainImgPath,imgDir)
dirPath=format%values
#findcurrentuserimg
allimgPath=os.listdir(dirPath)
#print(allimgPath)
fornameinallimgPath:
names.append(dirPath+'/'+name)
lables.append(int(imgDir))
print("savesucessful:")
print(names)
print(lables)
#returnnames,lables
trainImg=[]
forimgloadPathinnames:
obj=cv2.resize(cv2.imread(imgloadPath,0),(400,500))
trainImg.append(obj)
self.model.train(trainImg,np.array(lables))
print(lables)
defgetPeopleID(self,faceImgPath):
faceImg=cv2.imread(faceImgPath,0)
face=cv2.resize(faceImg,(400,500))
result=self.model.predict(face)
predictID=result[0]
predictError=result[1]
print(predictID)
print(predictError)
#print(result)
ifpredictError>self.threshold:
return-1
else:
print("getpeopleID")
returnpredictID
defgetPeopleID2(self,faceImg):
face=cv2.resize(faceImg,(400,500))
result=self.model.predict(face)
predictID=result[0]
predictError=result[1]
#print(predictID)
#print(predictError)
#print(result)
ifpredictError>self.threshold:
return-1
else:
returnpredictID
有了这两个类,我们就可以方便的构建魔镜的人脸身份识别子模块了,这里我们只需要通过下面的代码就可以使用人脸检测和进行人脸身份识别了:
GF=getFace()
rs=G
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年北京北大方正软件职业技术学院单招职业技能测试题库带答案详解(研优卷)
- 2026年内蒙古包头市单招职业适应性考试题库带答案详解(轻巧夺冠)
- 2026年厦门华天涉外职业技术学院单招职业技能考试题库及一套完整答案详解
- 2026年北京科技大学天津学院单招职业技能测试题库附答案详解(黄金题型)
- 2026年南昌工学院单招职业适应性考试题库及答案详解(各地真题)
- 食用油油脂知识培训课件
- 食物污染知识培训课件
- 2026年云南特殊教育职业学院单招职业倾向性考试题库带答案详解(轻巧夺冠)
- 2026年云南省德宏傣族景颇族自治州单招职业倾向性考试题库附答案详解(巩固)
- 2026年云南轻纺职业学院单招职业倾向性考试题库附参考答案详解(完整版)
- 泳池突发安全事故应急预案
- 03K501-1 燃气红外线辐射供暖系统设计选用及施工安装
- 2026年甘肃省公信科技有限公司面向社会招聘80人(第一批)考试重点题库及答案解析
- 2026年上海市虹口区初三上学期一模化学试卷和参考答案
- 高考英语同义词近义词(共1142组)
- 2026年东营科技职业学院单招综合素质考试必刷测试卷附答案
- 2025年安徽省选调生考试笔试试卷【附答案】
- 2024年小红书酒店集团通案(小游记·探寻新解法)
- 2025年高考英语复习热点题型专项训练:阅读理解词义猜测题(解析版)
- AQ 2026-2010 金属非金属矿山提升钢丝绳检验规范(正式版)
- 大学生预征对象登记表模板
评论
0/150
提交评论