您好,登錄后才能下訂單哦!
小編給大家分享一下Python如何實(shí)現(xiàn)圖片人臉檢測(cè)識(shí)別,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
前言
隨著科技的發(fā)展,人臉識(shí)別技術(shù)在許多領(lǐng)域得到的非常廣泛的應(yīng)用,手機(jī)支付、銀行身份驗(yàn)證、手機(jī)人臉解鎖等等。
識(shí)別
這里我們使用 opencv 中自帶了 haar人臉特征分類器,利用訓(xùn)練好的 haar 特征的 xml 文件,在圖片上檢測(cè)出人臉的坐標(biāo),利用這個(gè)坐標(biāo),我們可以將人臉區(qū)域剪切保存,也可以在原圖上將人臉框出。
代碼實(shí)現(xiàn):
# -*-coding:utf8-*-# import os import cv2 from PIL import Image, ImageDraw from datetime import datetime """ 分類器 https://github.com/opencv/opencv/tree/master/data/haarcascades 安裝模塊:pip install Pillow pip install opencv-python 博客:https://blog.52itstyle.vip/archives/3771/ """ def detectFaces(image_name): img = cv2.imread(image_name) face_cascade = cv2.CascadeClassifier(os.getcwd()+"\\haarcascade\\haarcascade_frontalface_alt.xml") if img.ndim == 3: gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) else: gray = img # if語句:如果img維度為3,說明不是灰度圖,先轉(zhuǎn)化為灰度圖gray,如果不為3,也就是2,原圖就是灰度圖 faces = face_cascade.detectMultiScale(gray, 1.2, 5) # 1.3和5是特征的最小、最大檢測(cè)窗口,它改變檢測(cè)結(jié)果也會(huì)改變 result = [] for (x, y, width, height) in faces: result.append((x, y, x + width, y + height)) return result # 保存人臉圖 def saveFaces(image_name): faces = detectFaces(image_name) if faces: # 將人臉保存在save_dir目錄下。 # Image模塊:Image.open獲取圖像句柄,crop剪切圖像(剪切的區(qū)域就是detectFaces返回的坐標(biāo)),save保存。 save_dir = image_name.split('.')[0] + "_faces" os.mkdir(save_dir) count = 0 for (x1, y1, x2, y2) in faces: file_name = os.path.join(save_dir, str(count) + ".jpg") Image.open(image_name).crop((x1, y1, x2, y2)).save(file_name) count += 1 if __name__ == '__main__': time1 = datetime.now() result = detectFaces(os.getcwd()+"\\images\\gaoyuanyuan.jpg") time2 = datetime.now() print("耗時(shí):" + str(time2 - time1)) if len(result) > 0: print("有人存在??!---》人數(shù)為:" + str(len(result))) else: print('視頻圖像中無人??!') drawFaces(os.getcwd()+"\\images\\", "hanxue.jpg") saveFaces(os.getcwd()+\\images\\gaoyuanyuan.jpg)
識(shí)別效果圖:
多人識(shí)別效果:
經(jīng)過測(cè)試,最終選用了 haarcascade_frontalface_alt.xml 做人臉識(shí)別,識(shí)別率最高。
人臉檢測(cè)分類器對(duì)比:
級(jí)聯(lián)分類器的類型 | XML文件名 |
---|---|
人臉檢測(cè)器(默認(rèn)) | haarcascade_frontalface_default.xml |
人臉檢測(cè)器(快速的Haar) | haarcascade_frontalface_alt2.xml |
人臉檢測(cè)器(Tree) | haarcascade_frontalface_alt_tree.xml |
人臉檢測(cè)器(Haar_1) | haarcascade_frontalface_alt.xml |
以上是“Python如何實(shí)現(xiàn)圖片人臉檢測(cè)識(shí)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。