国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

在Python中使用OpenCV進(jìn)行人臉檢測(cè)

stefanieliang / 1547人閱讀

摘要:總結(jié)在本文中,我們學(xué)習(xí)了如何使用中的,即通過(guò)代碼寫(xiě)了一個(gè)人臉檢測(cè)的程序。

OpenCV是如今最流行的計(jì)算機(jī)視覺(jué)庫(kù),而我們今天就是要學(xué)習(xí)如何安裝使用OpenCV,以及如何去訪問(wèn)我們的攝像頭。然后我們一起來(lái)看看寫(xiě)一個(gè)人臉檢測(cè)程序是如何地簡(jiǎn)單,簡(jiǎn)單到只需要幾行代碼。

在開(kāi)始之前,我假設(shè)你已經(jīng)對(duì)Python有一定的了解。當(dāng)然,如果你覺(jué)得你還不夠格,這里有推薦一些學(xué)習(xí)Python的電子書(shū),你可以先學(xué)習(xí)下Python,如此可以讓你更好地理解接下來(lái)的步驟。另外,這里還推薦一本電子書(shū)來(lái)學(xué)習(xí)OpenCV。

好,不浪費(fèi)時(shí)間,開(kāi)始吧。

To setup opencv in python environment you will need these things ready ( match the versions to follow along with this tutorial),
首先我們需要先準(zhǔn)備好這些環(huán)境(版本記得配好):

Python 2.x

OpenCV 2.x

Numpy庫(kù) (這個(gè)可以在稍后用pip下載)

首先,對(duì)于下載Python,我們可以先到官網(wǎng)上下對(duì)應(yīng)的版本,如果是Windows就可能是msi格式的版本,如果是Mac就可能是pkg格式的安裝包,如果是Linux則可能是源碼包。

安裝和Python后打開(kāi)命令行就可以使用pip命令進(jìn)行Python包的安裝了,如:

由于OpenCV使用Numpy庫(kù),因此先通過(guò)命令pip install numpy安裝Numpy庫(kù)。安裝完后,嘗試導(dǎo)入,沒(méi)有報(bào)錯(cuò)則ok:

然后進(jìn)入OpenCV官網(wǎng)下對(duì)應(yīng)的版本并安裝,嘗試導(dǎo)入:

嘗試人臉檢測(cè)

萬(wàn)事俱備,只欠東風(fēng)。我們來(lái)寫(xiě)代碼檢測(cè)人臉吧,來(lái)一發(fā)OpenCV的Hello world。

在這里我們準(zhǔn)備使用pre-trained的XML文件,這些XML文件都較難訓(xùn)練,但是我們不需要擔(dān)心,因此OpenCV已經(jīng)為我們提供了很多人臉檢測(cè)相關(guān)的pre-trained分類(lèi)器。

想要使用這寫(xiě)分類(lèi)器,我們需要將分類(lèi)器的XML文件haarcascade_frontalface_default.xmlopencv文件夾/sources/data/haarcascades/下復(fù)制到我們的項(xiàng)目目錄下,就是我們將要寫(xiě)程序的目錄下。如果沒(méi)有opencv文件夾/sources/data/haarcascades/這個(gè)目錄,可以嘗試找一下opencv文件夾/share/OpenCV/haarcascades/。只要找到如下文件即可:

然后如果我們要加載這個(gè)分類(lèi)器的話,如此就好:

detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

然后接下來(lái)我們先來(lái)測(cè)試一下攝像頭吧,

cap = cv2.VideoCapture(0)
ret, img = cap.read()
cv2.imshow("windowname", img)
cv2.waitKey(0)

# 釋放攝像頭資源
cap.release()

以上的代碼是調(diào)用你電腦的0號(hào)攝像頭,并展示出來(lái)。當(dāng)然,如果你有多個(gè)攝像頭,那么你也可以試試別的id,修改VideoCapture函數(shù)的參數(shù)即可。

其中cap.read()就是從攝像頭獲取到圖像,這個(gè)函數(shù)返回了兩個(gè)變量,第一個(gè)為布爾值表示成功與否,以及第二個(gè)是圖像。

然后程序通過(guò)imshow()展示圖片,其第一個(gè)傳入的參數(shù)為窗口的名稱(chēng),而第二個(gè)就是要展示的圖片,以上代碼傳入的就是我們的自拍。

而waitKey是用來(lái)停在圖片的展示界面,讓你看清楚,參數(shù)可以是10、100、1000等,單位是毫秒,這里填0就是一直停著。注意了,如果停留的時(shí)間不夠久,就可能看不見(jiàn)imshow的照片了。

運(yùn)行了這段代碼,你將會(huì)看到攝像頭所拍攝的畫(huà)面,一般來(lái)說(shuō)就是你自己了。

接下來(lái)我們將圖片先轉(zhuǎn)換為灰度圖片,

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

然后就開(kāi)始了人臉檢測(cè)之旅:

faces = detector.detectMultiScale(gray, 1.3, 5)

以上的這句代碼會(huì)等到一串list,list中的每個(gè)都有x, y, height, width四個(gè)變量。其中l(wèi)ist表示檢測(cè)到的人臉,即list的size就是人臉的個(gè)數(shù),而每個(gè)人臉在圖片中的位置是(x, y, height, width)。

為了能讓我們更直觀地看出來(lái)檢測(cè)結(jié)果,我們將這些人臉框出來(lái):

for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

更進(jìn)一步

現(xiàn)在我們已經(jīng)通過(guò)攝像頭檢測(cè)到人臉了,但是我們真正需要的是不是一張靜態(tài)的圖片,我們需要的是一個(gè)能檢測(cè)的實(shí)時(shí)動(dòng)態(tài)視頻流。因此我們加一個(gè)循環(huán),然后不斷的檢測(cè),最終在顯示在新窗口中。

detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
cap = cv2.VideoCapture(0)

while True:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = detector.detectMultiScale(gray, 1.3, 5)
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

    cv2.imshow("frame", img)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

需要注意的是,結(jié)尾用了waitKey和ord實(shí)現(xiàn)了按q退出的功能,就是每一毫秒都在檢測(cè)鍵盤(pán)有沒(méi)有按下了q,要是按下了就退出循環(huán)了。接下來(lái)就釋放資源。

總結(jié)

在本文中,我們學(xué)習(xí)了如何使用Python中的OpenCV,即通過(guò)代碼寫(xiě)了一個(gè)人臉檢測(cè)的程序。我們溫習(xí)或?qū)W習(xí)了這些知識(shí)點(diǎn):

使用OpenCV的分類(lèi)器

從攝像頭中讀取照片

在圖片上換框框

在新窗口上展示圖片

實(shí)時(shí)地進(jìn)行人臉檢測(cè)

P.S. 你們發(fā)現(xiàn)了XML那里有一個(gè)叫貓臉識(shí)別的文件嗎!!!

先這樣吧

原文,若有錯(cuò)誤之處請(qǐng)指出,更多地關(guān)注煎魚(yú)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/41761.html

相關(guān)文章

  • 利用python進(jìn)行識(shí)別相似圖片(二)

    摘要:上一篇文章的地址利用進(jìn)行識(shí)別相似圖片一安裝官網(wǎng)在進(jìn)行下一步操作時(shí),我們需要安裝,本來(lái)安裝的步驟跟平常安裝其他模塊一樣,而然由于的歷史原因用過(guò)都懂,弄得一點(diǎn)都不友好。 前言 和網(wǎng)上各種首先你要有一個(gè)女朋友的系列一樣,想進(jìn)行人臉判斷,首先要有臉,只要能靠確定人臉的位置,那么進(jìn)行兩張人臉是否相似的操作便迎刃而解了。 所以本篇文章著重講述如何利用openCV定位人臉。 上一篇文章的地址: 利用...

    余學(xué)文 評(píng)論0 收藏0
  • 機(jī)器視覺(jué)、模式識(shí)別庫(kù)匯總

    摘要:十開(kāi)放模式識(shí)別項(xiàng)目開(kāi)放模式識(shí)別項(xiàng)目,致力于開(kāi)發(fā)出一套包含圖像處理計(jì)算機(jī)視覺(jué)自然語(yǔ)言處理模式識(shí)別機(jī)器學(xué)習(xí)和相關(guān)領(lǐng)域算法的函數(shù)庫(kù)。 一、開(kāi)源生物特征識(shí)別庫(kù) OpenBROpenBR 是一個(gè)用來(lái)從照片中識(shí)別人臉的工具。還支持推算性別與年齡。使用方法:$ br -algorithm FaceRecognition -compare me.jpg you.jpg二、計(jì)算機(jī)視覺(jué)庫(kù) OpenCVOpenC...

    habren 評(píng)論0 收藏0
  • opencv+mtcnn+facenet+python+tensorflow 實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別(20

    摘要:實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別更新新增測(cè)試方法直接使用特征進(jìn)行計(jì)算對(duì)比此次更新主要想法上一個(gè)版本是使用對(duì)準(zhǔn)備好的若干張照片進(jìn)行訓(xùn)練,首先準(zhǔn)確率不是很高還沒(méi)細(xì)究問(wèn)題,猜測(cè)原因是自己準(zhǔn)備的圖片問(wèn)題,以及實(shí)時(shí)采集實(shí)時(shí)的環(huán)境影響,但最主要的原因還是對(duì)每個(gè)目標(biāo)對(duì)象 opencv+mtcnn+facenet+python+tensorflow 實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別(2018.9.26更新) 新增測(cè)試方法直接使用em...

    jindong 評(píng)論0 收藏0
  • cnn卷積神經(jīng)網(wǎng)絡(luò)打造人臉登錄系統(tǒng)

    摘要:本文基于環(huán)境,采用為基礎(chǔ)來(lái)構(gòu)建實(shí)時(shí)人臉檢測(cè)與識(shí)別系統(tǒng),探索人臉識(shí)別系統(tǒng)在現(xiàn)實(shí)應(yīng)用中的難點(diǎn)。對(duì)于人臉檢測(cè)方法,效果好于的方法,但是檢測(cè)力度也難以達(dá)到現(xiàn)場(chǎng)應(yīng)用標(biāo)準(zhǔn)。本文中,我們采用了基于深度學(xué)習(xí)方法的人臉檢測(cè)系統(tǒng)。 git地址:https://github.com/chenlinzho... 本文主要介紹了系統(tǒng)涉及的人臉檢測(cè)與識(shí)別的詳細(xì)方法,該系統(tǒng)基于python2.7.10/opencv...

    jackwang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<