用Python20行代碼實現人臉識別


 

OpenCV 是最流行的計算機視覺庫,原本用 C 和 C++ 開發,現在也支持 Python。
注意:很多人學Python過程中會遇到各種煩惱問題,沒有人幫答疑。為此小編建了個Python全棧免費答疑交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,不懂的問題有老司機解決里面還有最新Python教程項目可拿,,一起相互監督共同進步!

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

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

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

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

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

軟件環境:
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) #傳遞參數是scaleFactor和minNeighbors,分別表示人臉檢測過程中每次迭代時圖像的壓縮率以及每個人臉矩形保留近鄰數目的最小值 #檢測結果返回人臉矩形數組 #python學習資料交流分享群:852 250 729 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的20行代碼來實現人臉識別了~

注意:很多人學Python過程中會遇到各種煩惱問題,沒有人幫答疑。為此小編建了個Python全棧免費答疑交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,不懂的問題有老司機解決里面還有最新Python教程項目可拿,,一起相互監督共同進步!
本文的文字及圖片來源於網絡加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM