基于Dragonboard 410c的智能魔鏡設(shè)計(jì)(5)-通過人臉進(jìn)行用戶身份識別_第1頁
基于Dragonboard 410c的智能魔鏡設(shè)計(jì)(5)-通過人臉進(jìn)行用戶身份識別_第2頁
基于Dragonboard 410c的智能魔鏡設(shè)計(jì)(5)-通過人臉進(jìn)行用戶身份識別_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于Dragonboard410c的智能魔鏡設(shè)計(jì)(5)——通過人臉進(jìn)行用戶身份識別根據(jù)前面的設(shè)計(jì)方案,在設(shè)計(jì)的基于dragonboard410c的智能魔鏡中,需要根據(jù)超聲波檢測到有人靠近的時候,通過USB攝像頭采集人臉數(shù)據(jù),然后根據(jù)數(shù)據(jù)庫中的人臉數(shù)據(jù)進(jìn)行人臉匹配,識別用戶的身份,最終根據(jù)用戶身份顯示不同的消息和推送不同的內(nèi)容,這期blog將重點(diǎn)向大家介紹智能魔鏡中的人臉檢測和識別處理實(shí)現(xiàn)的原理和過程。需要進(jìn)行基于人臉的用戶身份識別,首先需要檢測出人臉,然后根據(jù)檢測出來的人臉與數(shù)據(jù)庫中的人臉進(jìn)行匹配,最終得出匹配度,根據(jù)匹配度確定該人臉的身份,這里將從這兩個方面來向大家介紹如何在智能魔鏡中實(shí)現(xiàn)人臉身份檢測,其實(shí)在前面的一系列blog中已經(jīng)給大家介紹了人臉識別和檢測的實(shí)現(xiàn)方法,這里就在結(jié)合智能魔鏡代碼設(shè)計(jì)再向大家如何應(yīng)用前面已經(jīng)設(shè)計(jì)好的人臉檢測和識別的代碼,將其集中到智能魔鏡中的應(yīng)用中來。在基于USB攝像頭人臉識別的文章中已經(jīng)告訴了大家如使用Python和OpenCV來何構(gòu)建人臉檢測代碼,我們這里構(gòu)建了一個getFac.py文件,在該文件中通過getFac類來實(shí)現(xiàn)人臉的檢測,其實(shí)也就是對前面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

有了上述類,我們就可以檢測并且獲得人臉圖像,接下來我們需要利用檢測到的人臉圖像,與數(shù)據(jù)庫中的人臉圖像進(jìn)行匹配,實(shí)現(xiàn)人臉的識別,其方法和前面使用USB攝像頭進(jìn)行人臉識別文章--第二篇中的方法一樣,采用opencv提供的人臉識別接口來實(shí)現(xiàn),但是這里為了在魔鏡中調(diào)用,重寫了前面blog的方法,構(gòu)建了一個peopleIdentification.py類來實(shí)現(xiàn)魔鏡中的人臉身份檢測,這里封裝了一個peopleDetected類來實(shí)現(xiàn)人臉的身份識別,重新封裝后的代碼和前面代碼稍有差異,具體設(shè)計(jì)如下:

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

有了這兩個類,我們就可以方便的構(gòu)建魔鏡的人臉身份識別子模塊了,這里我們只需要通過下面的代碼就可以使用人臉檢測和進(jìn)行人臉身份識別了:

GF=getFace()

rs=G

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論