Python實(shí)現(xiàn)檢測(cè)照片中的人臉數(shù)
最近疫情被隔離在家,準(zhǔn)備研究一下python的機(jī)器學(xué)習(xí),看了一些資料。也逛了逛論壇。
機(jī)器學(xué)習(xí)的實(shí)例真是太多了,讓人眼花繚亂,更加懵逼了。通俗來(lái)說(shuō),主要兩個(gè)方面,比較淺層次的就是機(jī)器學(xué)習(xí),最后才是深度學(xué)習(xí)。
主要過(guò)程就是通過(guò)一定的算法來(lái)訓(xùn)練大量的數(shù)據(jù)產(chǎn)生一個(gè)數(shù)據(jù)模型,最后再利用這個(gè)模型來(lái)分析或計(jì)算出出最接近于實(shí)際情況的結(jié)果。
大概理解了意思之后,我就不再去深究了,直接搞個(gè)實(shí)例來(lái)試試看什么效果。至于更深層級(jí)的東西,我比較喜歡在實(shí)戰(zhàn)中慢慢體會(huì)。
1、準(zhǔn)備
今天實(shí)踐的是python中的opencv這個(gè)庫(kù),至于這個(gè)庫(kù)官方肯定比我解釋的更加準(zhǔn)確,下面是官方的解釋。
OpenCV是一個(gè)基于Apache2.0許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。
沒(méi)有opencv環(huán)境的將opencv先安裝一下,為避免版本不一樣導(dǎo)致出現(xiàn)問(wèn)題,我這里在安裝命令中將版本號(hào)寫了出來(lái)。
pip install opencv-python==4.6.0.66
python解釋器使用的版本是3.8.6,我這里測(cè)試使用的是這兩個(gè)版本是沒(méi)有問(wèn)題的。
2、代碼
下面是整個(gè)業(yè)務(wù)的實(shí)現(xiàn)過(guò)程,haarcascade_frontalface_default.xml訓(xùn)練模型我是直接在girhub上面下載的。所以這里并沒(méi)有對(duì)數(shù)據(jù)訓(xùn)練的實(shí)現(xiàn),使用的是別人訓(xùn)練好的模型。
后面的學(xué)習(xí)中,我會(huì)慢慢訓(xùn)練出自己的模型來(lái)使用,其實(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')
對(duì)讀取的pic.jpg圖片做灰度處理。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
識(shí)別檢測(cè)一下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)檢測(cè)完成了,使用len函數(shù)計(jì)算一下檢測(cè)出的人臉個(gè)數(shù)。
print("當(dāng)前圖片中共發(fā)現(xiàn){}張人臉".format(len(faces)))
檢測(cè)出的人臉的信息都存在faces的數(shù)組中,遍歷一下人臉信息做處理。
for (x, y, w, h) in faces: # 在識(shí)別出的人臉部位畫上圓圈 cv2.circle(image, (int((x + x + w) / 2), int((y + y + h) / 2)), int(w / 2), (0, 255, 0), 2)
顯示識(shí)別出的人臉位置。
cv2.imshow("Face Nums", image) cv2.waitKey(0)
至此,通過(guò)機(jī)器學(xué)習(xí)做的一個(gè)簡(jiǎn)單的人臉識(shí)別的功能就完成了。
到此這篇關(guān)于Python實(shí)現(xiàn)檢測(cè)照片中的人臉數(shù)的文章就介紹到這了,更多相關(guān)Python檢測(cè)照片人臉內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中關(guān)于py文件之間相互import的問(wèn)題及解決方法
這篇文章主要介紹了python中關(guān)于py文件之間相互import的問(wèn)題,本文用一個(gè)例子演示下如何解決python中循環(huán)引用的問(wèn)題,需要的朋友可以參考下2022-02-02python中pip安裝、升級(jí)以及升級(jí)固定的包
我們知道python有大量的第三方庫(kù),這也是python的優(yōu)勢(shì)之一,pip就是python整的軟件包管理系統(tǒng),類似于Linux平臺(tái)的yum倉(cāng)庫(kù),下面這篇文章主要給大家介紹了關(guān)于python中pip安裝、升級(jí)以及升級(jí)固定包的相關(guān)資料,需要的朋友可以參考下2022-02-02基于Python實(shí)現(xiàn)Word轉(zhuǎn)HTML
將Word轉(zhuǎn)換為HTML能將文檔內(nèi)容發(fā)布在網(wǎng)頁(yè)上,這樣,用戶就可以通過(guò)瀏覽器直接查看或閱讀文檔而無(wú)需安裝特定的軟件,下面我們就來(lái)學(xué)習(xí)一下Python是如何實(shí)現(xiàn)Word轉(zhuǎn)HTML的吧2023-12-12超全面python常見(jiàn)報(bào)錯(cuò)以及解決方案梳理必收藏
使用python難免會(huì)出現(xiàn)各種各樣的報(bào)錯(cuò),以下是Python常見(jiàn)的報(bào)錯(cuò)以及解決方法(持續(xù)更新),快進(jìn)入收藏吃灰吧2022-03-03django 配置阿里云OSS存儲(chǔ)media文件的例子
今天小編就為大家分享一篇django 配置阿里云OSS存儲(chǔ)media文件的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Python?pytest自動(dòng)化測(cè)試庫(kù)十個(gè)強(qiáng)大用法示例
本文將介紹Python的pytest庫(kù)的10個(gè)強(qiáng)大用法,并提供相應(yīng)的代碼示例,幫助你更好地理解和應(yīng)用單元測(cè)試,它提供了許多高級(jí)功能和便利的用法,能夠讓我們更輕松地編寫和執(zhí)行單元測(cè)試2024-01-01Windows下實(shí)現(xiàn)將Pascal VOC轉(zhuǎn)化為TFRecords
今天小編就為大家分享一篇Windows下實(shí)現(xiàn)將Pascal VOC轉(zhuǎn)化為TFRecords,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02基于OpenCV實(shí)現(xiàn)視頻循環(huán)播放
這篇文章主要為大家介紹了如何利用OpenCV實(shí)現(xiàn)視頻的循環(huán)播放,本文為大家提供了兩種方式,一個(gè)是利用Python語(yǔ)言實(shí)現(xiàn),一個(gè)是利用C++語(yǔ)言實(shí)現(xiàn),需要的可以參考一下2022-02-02