基于Python和OpenCV的人臉檢測

面部識別一直是一個熱門話題,也從來沒有像現(xiàn)在這樣容易理解。在這篇文章中,我們首先介紹如何使用Python檢測人臉。


機器學習、人工智能和人臉識別是當前的重要課題。所以我想,使用Python來檢測照片中的面孔是多么容易,這將是一件很有趣的事情。這篇文章的重點是僅僅檢測人臉,而不是人臉識別,因為人臉識別實際上是為人臉指定一個名稱。使用Python檢測面孔的最流行也可能是最簡單的方法是使用OpenCV包。OpenCV是一個用C++編寫的計算機視覺庫,具有Python綁定。根據所使用的操作系統(tǒng),安裝起來可能會比較復雜。

尋找面孔

使用OpenCV查找人臉的主要方法有兩種:

Haar分類器

LBP級聯(lián)分級機

大多數(shù)教程使用Haar是因為它更精確,但它也比LBP慢得多。我將堅持本教程的Haar。OpenCV包實際上擁有有效使用Harr所需的所有數(shù)據?;旧希恍枰粋€包含右側數(shù)據的XML文件。如果你知道自己在做什么,或者你只需要使用OpenCV附帶的內容,你就可以創(chuàng)建自己的產品。我不是一個數(shù)據科學家,所以我將使用內置分類器。在本例中,您可以在安裝的OpenCV庫中找到它。就去/LIB/SITE-Package/CV2/data文件夾中的HAARCADESS_FrontalFaces_alt.xml。我復制了那個文件,并把它放在我寫的面部檢測代碼所在的文件夾中。

Haar通過觀察一系列正面和負面的圖像來工作?;旧?,有人去標記了一堆照片中的特征,不管是相關的還是不相關的,然后通過機器學習算法或神經網絡進行運行。Haar看邊緣,線和四個矩形的特征。上面有個很好的解釋OpenCV站點。一旦你有了數(shù)據,你就不需要做任何進一步的訓練,除非你需要完善你的檢測算法。

現(xiàn)在我們已經做好了準備,讓我們編寫一些代碼。

我們在這里做的第一件事是進口。在Python中,OpenCV綁定稱為CV2。然后,我們創(chuàng)建一個函數(shù),它接受圖像文件的路徑。我們使用OpenCV的imread方法讀取圖像文件,然后創(chuàng)建它的副本,以防止我們意外地修改原始圖像。接下來,我們將圖像轉換為灰度。你會發(fā)現(xiàn),計算機視覺幾乎總是更好的灰色比它的顏色,或至少是對OpenCV的情況。

下一步是使用OpenCV的XML文件加載Haar分類器?,F(xiàn)在我們可以嘗試使用分類器對象的檢測多尺度方法在圖像中找到人臉。我打印出我們找到的面孔數(shù)目,如果有的話。分類器對象實際上返回元組的迭代器。每個元組都包含它找到的面部的x/y坐標以及臉的寬度和高度。我們使用這些信息在臉周圍畫一個矩形,這個矩形是使用OpenCV的矩形方法發(fā)現(xiàn)的。最后給出了實驗結果:


我直接看著相機的照片效果很好。只是為了好玩,讓我們試著運行這個免版稅形象我通過我們的代碼發(fā)現(xiàn):


當我在代碼中運行這個映像時,我得到了以下結果:


正如您所看到的,OpenCV只找到了這四張照片中的兩張,所以這個特殊的級聯(lián)文件不足以找到照片中的所有面孔。

在照片中尋找眼睛

OpenCV還有一個HaarCascade眼XML文件,用于在照片中查找眼睛。如果你做了大量的攝影,你可能知道,當你做肖像畫時,你想把注意力集中在眼睛上。事實上,有些相機甚至有自動對焦功能。例如,我知道索尼幾年來一直在吹噓他們的眼睛對焦功能,而且在我對他們的一臺相機的測試中,它實際上運行得很好。它很可能使用類似Haars本身的東西來實時發(fā)現(xiàn)眼睛。

無論如何,我們需要稍微修改代碼,以生成一個眼睛查找器腳本:


這里我們添加了第二個級聯(lián)分類器對象。這一次,我們使用OpenCV內置的Haarcasement.xml檔案。另一個變化是在我們的循環(huán)中,我們在找到的面孔上循環(huán)。在這里,我們也嘗試找到眼睛,在它們周圍畫長方形的時候,在它們上循環(huán)。我嘗試通過這個新示例運行我的原始頭照圖像,得到以下結果:


這做得很好,雖然它沒有在右邊的眼睛周圍很好地畫出矩形。

包起來

OpenCV有很多功能可以讓您開始使用Python進行計算機視覺。您不需要編寫太多的代碼來創(chuàng)建有用的東西。當然,為了使這類代碼正常工作,您可能需要做比本教程中所示的更多的工作--培訓您的數(shù)據和完善您的數(shù)據集。我的理解是訓練部分是真正耗時的部分。無論如何,我強烈建議查看OpenCV并嘗試一下。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容