欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

20行python代碼實(shí)現(xiàn)人臉識別

 更新時間:2019年05月05日 11:18:56   作者:Python編程爬蟲工程師  
這篇文章主要介紹了python人臉識別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

OpenCV 是最流行的計(jì)算機(jī)視覺庫,原本用 C 和 C++ 開發(fā),現(xiàn)在也支持 Python。

它使用機(jī)器學(xué)習(xí)算法在圖像中搜索人的面部。對于人臉這么復(fù)雜的東西,并沒有一個簡單的檢測能對是否存在人臉下結(jié)論,而需要成千上萬的特征匹配。算法把人臉識別任務(wù)分解成數(shù)千個小任務(wù),每個都不難處理。這些任務(wù)也被稱為分類器。

對于類似于人臉的對象,你或許需要不少于 6000 個分類器,每一個都需要成功匹配(當(dāng)然,有容錯率),才能檢測出人臉。但這有一個問題:對于人臉識別,算法從左上角開始計(jì)算一個個數(shù)據(jù)塊,不停問“這是張臉嗎”。每個數(shù)據(jù)塊有超過 6000 個檢測,加起來的計(jì)算量會達(dá)到數(shù)百萬級別,計(jì)算機(jī)很可能會讓你等得花兒都謝了。

OpenCV 使用 cascades 來避免這種情況。Cascade 是什么?最佳答案已經(jīng)在字典里了:一條瀑布或者連續(xù)瀑布。

好比連續(xù)瀑布,OpenCV cascade 把人臉檢測問題分解為好幾步。對于每個數(shù)據(jù)塊,它都進(jìn)行一個粗略、快速的檢測。若通過,會再進(jìn)行一個更仔細(xì)的檢測,以此不斷類推。該算法有 30 到 50 個這樣的階段,或者說 cascade。

只有通過全部階段,算法才會判斷檢測到人臉。這樣做的好處是:大多數(shù)圖形都會在頭幾步就產(chǎn)生否定反饋,算法因而不需要在它上面測試所有 6000 個特征,大大節(jié)省了時間。相對于“正常流程”耗費(fèi)數(shù)個小時,這可以實(shí)時實(shí)現(xiàn)人臉檢測。

軟件環(huán)境:

python3+openCV

代碼:

#encoding:utf-8
import cv2
filename = "/users/Downloads/20181102142518.png"
def detect(filename):
 # haarcascade_frontalface_default.xml存儲在package安裝的位置
face_cascade = cv2.CascadeClassifier("/usr/local/lib/python3.6/site-packages/cv2/data/haarcascade_frontalface_default.xml")
 img = cv2.imread(filename)
 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 #傳遞參數(shù)是scaleFactor和minNeighbors,分別表示人臉檢測過程中每次迭代時圖像的壓縮率以及每個人臉矩形保留近鄰數(shù)目的最小值
 #檢測結(jié)果返回人臉矩形數(shù)組
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
 for (x, y, w, h) in faces:
 img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
 cv2.namedWindow("Human Face Result!")
 cv2.imshow("Human Face Result!", img)
 cv2.imwrite("images/Face.jpg", img)
 cv2.waitKey(0)
 cv2.destroyAllWindows()
detect(filename)

識別后:

以上所述是小編給大家介紹的python人臉識別詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論