Python實現(xiàn)檢測照片中的人臉數
最近疫情被隔離在家,準備研究一下python的機器學習,看了一些資料。也逛了逛論壇。
機器學習的實例真是太多了,讓人眼花繚亂,更加懵逼了。通俗來說,主要兩個方面,比較淺層次的就是機器學習,最后才是深度學習。
主要過程就是通過一定的算法來訓練大量的數據產生一個數據模型,最后再利用這個模型來分析或計算出出最接近于實際情況的結果。
大概理解了意思之后,我就不再去深究了,直接搞個實例來試試看什么效果。至于更深層級的東西,我比較喜歡在實戰(zhàn)中慢慢體會。
1、準備
今天實踐的是python中的opencv這個庫,至于這個庫官方肯定比我解釋的更加準確,下面是官方的解釋。
OpenCV是一個基于Apache2.0許可(開源)發(fā)行的跨平臺計算機視覺和機器學習軟件庫,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。
沒有opencv環(huán)境的將opencv先安裝一下,為避免版本不一樣導致出現(xiàn)問題,我這里在安裝命令中將版本號寫了出來。
pip install opencv-python==4.6.0.66
python解釋器使用的版本是3.8.6,我這里測試使用的是這兩個版本是沒有問題的。
2、代碼
下面是整個業(yè)務的實現(xiàn)過程,haarcascade_frontalface_default.xml訓練模型我是直接在girhub上面下載的。所以這里并沒有對數據訓練的實現(xiàn),使用的是別人訓練好的模型。
后面的學習中,我會慢慢訓練出自己的模型來使用,其實不用自己訓練數據模型的話代碼量還是比較少的。下面是github的訓練模型的下載地址,目前已經2100多的star了。
https://github.com/opencv/opencv/tree/master/data/haarcascades
下載好訓練模型之后放在自己本地,一會在調用訓練模型的時候直接調用就OK了。導入opencv模塊,注意這里導入的名稱是cv2。
import cv2
獲取訓練好的數據模型(haarcascade_frontalface_default.xml這就是我們前面從github上面下載的)。
face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')
讀取需要分析的原始圖片。
image = cv2.imread(r'./pic.jpg')
對讀取的pic.jpg圖片做灰度處理。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
識別檢測一下women.jpeg圖片中的人臉的個數是多少個。
faces = face_cascade.detectMultiScale( gray, scaleFactor=1.15, minNeighbors=5, minSize=(5, 5), flags=cv2.CASCADE_SCALE_IMAGE )
這時實際上已經檢測完成了,使用len函數計算一下檢測出的人臉個數。
print("當前圖片中共發(fā)現(xiàn){}張人臉".format(len(faces)))
檢測出的人臉的信息都存在faces的數組中,遍歷一下人臉信息做處理。
for (x, y, w, h) in faces: # 在識別出的人臉部位畫上圓圈 cv2.circle(image, (int((x + x + w) / 2), int((y + y + h) / 2)), int(w / 2), (0, 255, 0), 2)
顯示識別出的人臉位置。
cv2.imshow("Face Nums", image) cv2.waitKey(0)
至此,通過機器學習做的一個簡單的人臉識別的功能就完成了。
到此這篇關于Python實現(xiàn)檢測照片中的人臉數的文章就介紹到這了,更多相關Python檢測照片人臉內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python中關于py文件之間相互import的問題及解決方法
這篇文章主要介紹了python中關于py文件之間相互import的問題,本文用一個例子演示下如何解決python中循環(huán)引用的問題,需要的朋友可以參考下2022-02-02Windows下實現(xiàn)將Pascal VOC轉化為TFRecords
今天小編就為大家分享一篇Windows下實現(xiàn)將Pascal VOC轉化為TFRecords,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02