20行python代碼實(shí)現(xiàn)人臉識(shí)別
OpenCV 是最流行的計(jì)算機(jī)視覺(jué)庫(kù),原本用 C 和 C++ 開(kāi)發(fā),現(xiàn)在也支持 Python。
它使用機(jī)器學(xué)習(xí)算法在圖像中搜索人的面部。對(duì)于人臉這么復(fù)雜的東西,并沒(méi)有一個(gè)簡(jiǎn)單的檢測(cè)能對(duì)是否存在人臉下結(jié)論,而需要成千上萬(wàn)的特征匹配。算法把人臉識(shí)別任務(wù)分解成數(shù)千個(gè)小任務(wù),每個(gè)都不難處理。這些任務(wù)也被稱(chēng)為分類(lèi)器。
對(duì)于類(lèi)似于人臉的對(duì)象,你或許需要不少于 6000 個(gè)分類(lèi)器,每一個(gè)都需要成功匹配(當(dāng)然,有容錯(cuò)率),才能檢測(cè)出人臉。但這有一個(gè)問(wèn)題:對(duì)于人臉識(shí)別,算法從左上角開(kāi)始計(jì)算一個(gè)個(gè)數(shù)據(jù)塊,不停問(wèn)“這是張臉嗎”。每個(gè)數(shù)據(jù)塊有超過(guò) 6000 個(gè)檢測(cè),加起來(lái)的計(jì)算量會(huì)達(dá)到數(shù)百萬(wàn)級(jí)別,計(jì)算機(jī)很可能會(huì)讓你等得花兒都謝了。
OpenCV 使用 cascades 來(lái)避免這種情況。Cascade 是什么?最佳答案已經(jīng)在字典里了:一條瀑布或者連續(xù)瀑布。
好比連續(xù)瀑布,OpenCV cascade 把人臉檢測(cè)問(wèn)題分解為好幾步。對(duì)于每個(gè)數(shù)據(jù)塊,它都進(jìn)行一個(gè)粗略、快速的檢測(cè)。若通過(guò),會(huì)再進(jìn)行一個(gè)更仔細(xì)的檢測(cè),以此不斷類(lèi)推。該算法有 30 到 50 個(gè)這樣的階段,或者說(shuō) cascade。
只有通過(guò)全部階段,算法才會(huì)判斷檢測(cè)到人臉。這樣做的好處是:大多數(shù)圖形都會(huì)在頭幾步就產(chǎn)生否定反饋,算法因而不需要在它上面測(cè)試所有 6000 個(gè)特征,大大節(jié)省了時(shí)間。相對(duì)于“正常流程”耗費(fèi)數(shù)個(gè)小時(shí),這可以實(shí)時(shí)實(shí)現(xiàn)人臉檢測(cè)。
軟件環(huán)境:
python3+openCV
代碼:
#encoding:utf-8 import cv2 filename = "/users/Downloads/20181102142518.png" def detect(filename): # haarcascade_frontalface_default.xml存儲(chǔ)在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,分別表示人臉檢測(cè)過(guò)程中每次迭代時(shí)圖像的壓縮率以及每個(gè)人臉矩形保留近鄰數(shù)目的最小值 #檢測(cè)結(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)
識(shí)別后:
以上所述是小編給大家介紹的python人臉識(shí)別詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Python基于Opencv來(lái)快速實(shí)現(xiàn)人臉識(shí)別過(guò)程詳解(完整版)
- python實(shí)現(xiàn)人臉識(shí)別代碼
- Python 40行代碼實(shí)現(xiàn)人臉識(shí)別功能
- python使用opencv進(jìn)行人臉識(shí)別
- 用Python實(shí)現(xiàn)簡(jiǎn)單的人臉識(shí)別功能步驟詳解
- 10分鐘學(xué)會(huì)使用python實(shí)現(xiàn)人臉識(shí)別(附源碼)
- Python實(shí)現(xiàn)人臉識(shí)別
- Python實(shí)現(xiàn)人臉識(shí)別的詳細(xì)圖文教程
相關(guān)文章
解決pytorch下出現(xiàn)multi-target not supported at的一種可能原因
這篇文章主要介紹了解決pytorch下出現(xiàn)multi-target not supported at的一種可能原因,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02使用Python畫(huà)了一棵圣誕樹(shù)的實(shí)例代碼
這篇文章主要介紹了使用Python畫(huà)了一棵圣誕樹(shù)的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11在Linux中通過(guò)Python腳本訪問(wèn)mdb數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了在Linux中通過(guò)Python腳本訪問(wèn)mdb數(shù)據(jù)庫(kù)的方法,本文示例基于debian系的Linux系統(tǒng),需要的朋友可以參考下2015-05-05python 動(dòng)態(tài)生成變量名以及動(dòng)態(tài)獲取變量的變量名方法
今天小編就為大家分享一篇python 動(dòng)態(tài)生成變量名以及動(dòng)態(tài)獲取變量的變量名方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入
這篇文章主要介紹了python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入的相關(guān)資料,需要的朋友可以參考下2016-04-04利用rest framework搭建Django API過(guò)程解析
這篇文章主要介紹了利用rest framework搭建Django API過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08關(guān)于Python調(diào)用百度語(yǔ)音合成SDK實(shí)現(xiàn)文字轉(zhuǎn)音頻的方法
這篇文章主要介紹了關(guān)于Python調(diào)用百度語(yǔ)音合成SDK實(shí)現(xiàn)文字轉(zhuǎn)音頻的方法,AipSpeech是語(yǔ)音合成的Python?SDK客戶端,為使用語(yǔ)音合成的開(kāi)發(fā)人員提供了一系列的交互方法,需要的朋友可以參考下2023-07-07Python實(shí)現(xiàn)多任務(wù)進(jìn)程示例
大家好,本篇文章主要講的是Python實(shí)現(xiàn)多任務(wù)進(jìn)程示例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01分析python動(dòng)態(tài)規(guī)劃的遞歸、非遞歸實(shí)現(xiàn)
本文小編給大家詳細(xì)分析了python動(dòng)態(tài)規(guī)劃的遞歸、非遞歸實(shí)現(xiàn)過(guò)程以及相關(guān)代碼,有興趣的朋友可以學(xué)習(xí)下。2018-03-03