這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在Python中利用OpenCV和Adaboost實(shí)現(xiàn)人臉識(shí)別功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比隆子網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式隆子網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋隆子地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。首先講講需要用到的新函數(shù):
CascadeClassifier()
函數(shù),導(dǎo)入分類器
cv2.CascadeClassifier('xxxxx.xml') #haarcascade_frontalface_alt.xml臉部識(shí)別文件 #haarcascade_eye.xml眼部識(shí)別文件
函數(shù)的參數(shù)是xml完整路徑(具體看你的opencv安裝在哪里的,在opencv\sources\data\haarcascades下面),xml文件中是封裝好的算法
detectMultiScale()
函數(shù),進(jìn)行識(shí)別
detectMultiScale(image,scaleFactor,minNeighbors,flags,minSize,maxSize)
最終返回值為識(shí)別出的矩陣框[x, y, w, h],(x,y)左上角起始坐標(biāo),w寬,h高
image:用于檢測(cè)的圖像
scaleFactor:前后兩次相繼的掃描中,搜索窗口的比例系數(shù).例如1.1指將搜索窗口依次擴(kuò)大10%。圖片小的時(shí)候,比例系數(shù)盡量小能提高準(zhǔn)確率
minNeighbors:構(gòu)成檢測(cè)目標(biāo)的相鄰矩形的最小個(gè)數(shù)。一般使用2or3,為0時(shí)返回所有的被檢候選矩形框。
rectangle()
函數(shù),在圖片上畫(huà)矩陣
cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)
image是原始圖片
(x,y)是矩形左上角
(x+w,y+h)是矩形右下角
(0,255,0)是矩形的BGR顏色, 為紅色
2, 是繪制矩形的線寬
程序邏輯:
導(dǎo)入Haar級(jí)聯(lián)分類器算法,讀入要處理圖片,將圖片變成時(shí)候的大小,用detectMultiScale()函數(shù)先識(shí)別出人臉,在原圖上框出,然后提取出識(shí)別出的人臉矩形框,在人臉矩形框內(nèi)識(shí)別出眼睛,在原圖上框出,展示出識(shí)別完的圖像。
完整程序及注解:
import cv2 face_cascade = cv2.CascadeClassifier('D:\opencv\sources\data\haarcascades/haarcascade_frontalface_alt.xml') eye_cascade = cv2.CascadeClassifier('D:\opencv\sources\data\haarcascades/haarcascade_eye.xml') img1 = cv2.imread('face1.png') img = cv2.resize(img1,(240,320),interpolation=cv2.INTER_LINEAR) faces = face_cascade.detectMultiScale(img,1.2,2) for (x,y,w,h) in faces: cv2.rectangle(img,(x,y),(x+w,x+h),(255,0,0),2)#用顏色為BGR(255,0,0)粗度為2的線條在img畫(huà)出識(shí)別出的矩型 face_re = img[y:y+h,x:x+w]#抽取出框出的臉部部分,注意順序y在前 eyes = eye_cascade.detectMultiScale(face_re)#在框出的臉部部分識(shí)別眼睛 for (ex,ey,ew,eh) in eyes: cv2.rectangle(face_re,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) cv2.imshow('img',img) key = cv2.waitKey(0) if key==27: cv2.destoryWindow('img')
上述就是小編為大家分享的怎么在Python中利用OpenCV和Adaboost實(shí)現(xiàn)人臉識(shí)別功能了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。