Python實(shí)現(xiàn)檢測照片中的人臉數(shù)
最近疫情被隔離在家,準(zhǔn)備研究一下python的機(jī)器學(xué)習(xí),看了一些資料。也逛了逛論壇。
機(jī)器學(xué)習(xí)的實(shí)例真是太多了,讓人眼花繚亂,更加懵逼了。通俗來說,主要兩個(gè)方面,比較淺層次的就是機(jī)器學(xué)習(xí),最后才是深度學(xué)習(xí)。
主要過程就是通過一定的算法來訓(xùn)練大量的數(shù)據(jù)產(chǎn)生一個(gè)數(shù)據(jù)模型,最后再利用這個(gè)模型來分析或計(jì)算出出最接近于實(shí)際情況的結(jié)果。
大概理解了意思之后,我就不再去深究了,直接搞個(gè)實(shí)例來試試看什么效果。至于更深層級的東西,我比較喜歡在實(shí)戰(zhàn)中慢慢體會(huì)。
1、準(zhǔn)備
今天實(shí)踐的是python中的opencv這個(gè)庫,至于這個(gè)庫官方肯定比我解釋的更加準(zhǔn)確,下面是官方的解釋。
OpenCV是一個(gè)基于Apache2.0許可(開源)發(fā)行的跨平臺計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。
沒有opencv環(huán)境的將opencv先安裝一下,為避免版本不一樣導(dǎo)致出現(xiàn)問題,我這里在安裝命令中將版本號寫了出來。
pip install opencv-python==4.6.0.66
python解釋器使用的版本是3.8.6,我這里測試使用的是這兩個(gè)版本是沒有問題的。
2、代碼
下面是整個(gè)業(yè)務(wù)的實(shí)現(xiàn)過程,haarcascade_frontalface_default.xml訓(xùn)練模型我是直接在girhub上面下載的。所以這里并沒有對數(shù)據(jù)訓(xùn)練的實(shí)現(xiàn),使用的是別人訓(xùn)練好的模型。
后面的學(xué)習(xí)中,我會(huì)慢慢訓(xùn)練出自己的模型來使用,其實(shí)不用自己訓(xùn)練數(shù)據(jù)模型的話代碼量還是比較少的。下面是github的訓(xùn)練模型的下載地址,目前已經(jīng)2100多的star了。
https://github.com/opencv/opencv/tree/master/data/haarcascades
下載好訓(xùn)練模型之后放在自己本地,一會(huì)在調(diào)用訓(xùn)練模型的時(shí)候直接調(diào)用就OK了。導(dǎo)入opencv模塊,注意這里導(dǎo)入的名稱是cv2。
import cv2
獲取訓(xùn)練好的數(shù)據(jù)模型(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圖片中的人臉的個(gè)數(shù)是多少個(gè)。
faces = face_cascade.detectMultiScale(
gray,
scaleFactor=1.15,
minNeighbors=5,
minSize=(5, 5),
flags=cv2.CASCADE_SCALE_IMAGE
)
這時(shí)實(shí)際上已經(jīng)檢測完成了,使用len函數(shù)計(jì)算一下檢測出的人臉個(gè)數(shù)。
print("當(dāng)前圖片中共發(fā)現(xiàn){}張人臉".format(len(faces)))
檢測出的人臉的信息都存在faces的數(shù)組中,遍歷一下人臉信息做處理。
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)
至此,通過機(jī)器學(xué)習(xí)做的一個(gè)簡單的人臉識別的功能就完成了。
到此這篇關(guān)于Python實(shí)現(xiàn)檢測照片中的人臉數(shù)的文章就介紹到這了,更多相關(guān)Python檢測照片人臉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python正則表達(dá)式?r'(.*)?are?(.*?)?.*'的深入理解
日常的開發(fā)工作中經(jīng)常會(huì)有處理字符串的需求,簡單的字符串處理,我們使用python內(nèi)置的字符串處理函數(shù)就可以了,但是復(fù)雜的字符串匹配就需要借助正則表達(dá)式了,這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式?r‘(.*)?are?(.*?)?.*‘的相關(guān)資料,需要的朋友可以參考下2022-07-07
python+opencv 讀取文件夾下的所有圖像并批量保存ROI的方法
今天小編就為大家分享一篇python+opencv 讀取文件夾下的所有圖像并批量保存ROI的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
自定義實(shí)現(xiàn) PyQt5 下拉復(fù)選框 ComboCheckBox的完整代碼
這篇文章主要介紹了自定義實(shí)現(xiàn) PyQt5 下拉復(fù)選框 ComboCheckBox的完整代碼,本文通過實(shí)例代碼講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
python3操作redis實(shí)現(xiàn)List列表實(shí)例
本文主要介紹了python3操作redis實(shí)現(xiàn)List列表實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

