手機(jī)銷量被超越 華為智能手表又如何?
在上一期基于DragonBoard 410c開發(fā)板實(shí)現(xiàn)人臉識(shí)別文章中,已經(jīng)教大家如何利用Python實(shí)現(xiàn)人臉識(shí)別的第一個(gè)部分——人臉檢測(cè)功能,今天在前面人臉檢測(cè)的基礎(chǔ)上,進(jìn)一步教大家如何使用createFisherFaceRecognizer在dragonbaord 410c開發(fā)板上來進(jìn)行人臉識(shí)別,今天將重點(diǎn)介紹該方法的原理和調(diào)用方法,處理中只是以識(shí)別前面人臉檢測(cè)方法檢測(cè)出來的人臉和數(shù)據(jù)庫中存入的人臉進(jìn)行匹配,最終識(shí)別人臉對(duì)象。
首先我們需要準(zhǔn)備人臉數(shù)據(jù),這里我對(duì)使用上一期文章中的獲取人臉的方法進(jìn)行了封裝,寫成了getFace.py文件,通過執(zhí)行該文件在Dragonboard 410c上采集了三個(gè)人的人臉,每個(gè)人的人臉采集5次不同角度數(shù)據(jù),分別保存到了usrImg文件夾下的001、002、003文件夾中,對(duì)應(yīng)的命名為1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,這些數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),然后基于這些數(shù)據(jù)調(diào)用FaceRecognizer提供的方法來實(shí)現(xiàn)對(duì)測(cè)試人臉的預(yù)測(cè)。
準(zhǔn)備好數(shù)據(jù)后,就可以利用這些數(shù)據(jù)進(jìn)行簡(jiǎn)單的人臉識(shí)別了,根據(jù)上述數(shù)據(jù),使用Python編寫程序,將數(shù)據(jù)導(dǎo)入到系統(tǒng)中,然后構(gòu)建對(duì)應(yīng)的訓(xùn)練數(shù)據(jù)集合和標(biāo)簽,其中相同的圖片對(duì)應(yīng)相同的標(biāo)簽數(shù)據(jù),具體的對(duì)應(yīng)方式如下:
人臉圖片 標(biāo)簽
./usrImg/001/1.jpg 0
./usrImg/001/2.jpg 0
./usrImg/001/3.jpg 0
./usrImg/001/4.jpg 0
./usrImg/001/5.jpg 0
./usrImg/002/1.jpg 1
./usrImg/002/2.jpg 1
./usrImg/002/3.jpg 1
./usrImg/002/4.jpg 1
./usrImg/002/5.jpg 1
./usrImg/003/1.jpg 2
./usrImg/003/2.jpg 2
./usrImg/003/3.jpg 2
./usrImg/003/4.jpg 2
./usrImg/003/5.jpg 2
在讀取中,通過以下代碼來讀取到limg和lables兩個(gè)列表中:
dir = ['./usrImg/001/','./usrImg/002/','./usrImg/003/']
name = ['1.jpg','2.jpg','3.jpg','4.jpg','5.jpg']
lables = []
limg = []
n = 0
for x in dir:
for y in name:
obj = cv2.imread(x+y,0)
obj2=cv2.resize(obj,(400,500))
limg.append(obj2)
lables.append(n)
n = n+1
然后就可以調(diào)用FaceRecognizer中提供的方法來進(jìn)行人臉訓(xùn)練了,具體代碼如下:
model = cv2.createFisherFaceRecognizer();
model.train(limg,np.array(lables))
完成訓(xùn)練后,讀取測(cè)試人臉,這里可以用上一期人臉識(shí)別文章中的代碼讀取獲取人臉,接著就可以進(jìn)行人臉測(cè)試了,具體代碼如下:
img1 = cv2.imread(‘test.jpg’,0)
test=cv2.resize(img1,(400,500))
result = model.predict(test)
print result
完成后,將代碼進(jìn)行保存,運(yùn)行腳本,就可以得到人臉檢測(cè)結(jié)果,將會(huì)輸出被檢測(cè)人臉匹配的標(biāo)簽和相似度,結(jié)果如下:
以上就是整個(gè)人臉識(shí)別實(shí)現(xiàn)的過程,后續(xù)blog中將進(jìn)一步完善如何利用攝像頭直接檢測(cè)人臉和識(shí)別出對(duì)應(yīng)的人,并且顯示姓名。