Python中的簡單人臉檢測(建議收藏)

2021-01-08 人工智慧研究院

如何使用OpenCV庫檢測圖像中的人臉

在本文中,將展示如何使用Python構建簡單的面部檢測器。建立一個可以檢測人臉的程序是一個很好的項目,可以開始使用計算機視覺。

從名稱可以理解,我們將編寫一個程序來檢測圖像中的面部。當我說「程序」時,您可以將其理解為教機器做什麼。我喜歡使用教學而不是編程,因為這實際上是我們正在做的事情。最好的學習方法是教學,因此在教機器如何識別人臉的同時,我們也在學習。在進入項目之前,講一講人臉檢測和人臉識別器之間的區別。

人臉檢測與人臉識別

這兩件事聽起來很相似,但實際上它們並不相同。讓我們理解它們之間的區別,以便我們不會錯過重點。人臉檢測是從圖像或視頻中檢測人臉的過程,無關緊要。該程序除了發現面孔外沒有做任何其他事情。但是,另一方面,人臉識別程序會找到人臉,並且還能分辨出誰屬於誰。因此,它不僅僅是提供檢測信息。有更多的編程,換句話說,就是更多的教學。

假設您正在觀看街道,汽車正在駛過。人臉檢測就像告訴路過的物體是一輛汽車。而面部識別器就像是能夠分辨路過的汽車的模型。這是一個很好的圖像,顯示了實際的差異。

我們將為此項目使用一個模塊庫,稱為OpenCV。OpenCV是高度優化的庫,專注於實時應用程式。

OpenCV(開源計算機視覺庫)是一個開源計算機視覺和機器學習軟體庫。OpenCV的構建旨在為計算機視覺應用程式提供通用的基礎結構,並加速在商業產品中使用機器感知。作為BSD許可的產品,OpenCV使企業可以輕鬆地使用和修改代碼。

安裝軟體包。

pip install opencv-python

安裝完成後,我們可以將其導入到我們的程序中。

import cv2

OpenCV已經包含許多針對面部,眼睛,微笑等的經過預先訓練的分類器。這些XML文件存儲在文件夾中。我們將使用面部檢測模型。

這是面部檢測的連結:https : //raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml

如果您有帳戶,則可以從Github下載XML文件。如果不這樣做,請隨時從下面的連結複製代碼,並將其粘貼到文本文檔中,並將其另存為「 face_detector.xml」。

將文件保存到當前文件夾後,讓我們將其加載到程序中。

# Load the cascade

face_cascade = cv2.CascadeClassifier('face_detector.xml')

導入圖片

在此步驟中,您將選擇要在其上測試代碼的圖像。確保圖像中至少有一張臉,以便我們的程序可以找到一張。這是一個人的示例圖像。

選擇圖像後,讓我們在程序中對其進行定義。確保圖像文件位於您正在使用的文件夾中。

#讀取輸入圖像

img = cv2.imread('test.jpg')

人臉檢測

感謝為OpenCV做出的貢獻。這是檢測圖像中人臉的代碼:

#檢測人臉

face = face_cascade.detectMultiScale(img,1.1,4)

我們在代碼前面定義了face_cascade。檢測到面部之後,我們將在其周圍繪製矩形,以便我們知道機器看到的內容。機器可能會犯錯誤,但是我們的目標應該是教導最佳和最優化的方法,以使預測更加準確。

使用以下代碼可以在檢測到的面部周圍繪製矩形:

# Draw rectangle around the faces

for (x, y, w, h) in faces:

cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)

(255,0,0)是我們要繪製的矩形的顏色。您可以使用它並更改顏色。(2)視線的粗細。您可以更改值並查看其外觀。結果

這是最後一步,現在我們將結果導出為圖像文件。此圖像將顯示人臉檢測的結果。要保存新的圖像文件,我們將使用cv2庫中的一種名為「 imwrite」的方法。保存完成後,您將在終端中看到「成功保存」。

# Exporttheresult

cv2.imwrite("face_detected.png", img)

print('Successfully saved')

現在,就已經創建了一個檢測圖像中人臉的程序。感謝閱讀!

相關焦點

  • 如何在Python中創建交互式可視化?(建議收藏)
    如何在Python中創建交互式可視化。在探索添加更多交互控制項之前,我們將僅以不同格式繪製數據開始。如果您一直關注我一段時間,會注意到這是數據可視化系列文章中的第三篇。首先使用默認的python可視化庫matplotlib引入了數據可視化。然後,我們學習了如何使用相同的庫在時間序列上創建動畫可視化效果。
  • Python數據可視化之高速繪圖神器PyQtGraph庫,強烈建議收藏
    02什麼是PyQtGraph庫先上個2D繪製效果圖:再來個3D繪製效果圖:PyQtGraph是一個純python的圖形和GUI庫,構建於PyQt4/PySide和numpy之上,它主要用於數學/科學/工程應用方面。
  • 使用OpenCV和Python構建自己的車輛檢測模型
    utm_source=blog&utm_medium=vehicle-detection-opencv-python)目錄視頻中運動目標檢測的思想視頻中目標檢測的真實世界用例視頻目標檢測的基本概念 幀差分 圖像閾值 檢測輪廓 圖像膨脹利用OpenCV構建車輛檢測系統視頻中運動目標檢測的思想目標檢測是計算機視覺中一個引人入勝的領域。
  • Python 三十大實踐、建議和技巧
    希望這些訣竅能在實際工作中幫助大家,並且學到一些有用的知識。1、使用 python 3由於官方從2020年1月1日起就停止了對python2.7的更新支持,因此本教程的大部分例子都只能在python 3環境下運行。如果你仍然在使用2.7版本,請先升級到python 3。
  • 序列比對在biopython中的處理
    序列比對是生物信息學分析中的常見任務,包含局部比對和全局比對兩大算法,局部比對最經典的代表是blast, 全局比對則用於多序列比對。在biopython中,支持對序列比對的結果進行讀寫,解析,以及運行序列比對的程序。
  • 乾貨|如何利用Python處理JSON格式的數據,建議收藏!
    本文轉載自【微信公眾號:數據分析與籃球,ID:dylanxia2019】經微信公眾號授權轉載,如需轉載與原文作者聯繫JSON數據格式在我們的日常工作中經常會接觸到,無論是做爬蟲開發還是一般的數據分析處理,本文小編就來分享一下當數據接口是JSON格式時,如何進行數據處理進行詳細的介紹
  • 如何自學成 Python 大神?這裡有些建議
    一種特定的語法除了適用於特定的數據結構之外,還適用於其他類似的數據結構,比如 Python 的內置函數 len(),它用於返回一個Python列表( https://coolpythoncodes.com/python-list-tutorial )、元組、字符串、集合等多種數據結構的長度,而在 Java 中則有多種不同的語法,如 [variable].length、[variable].length
  • 中科大統計學python_python 中科大 - CSDN
    強調在知識的廣度、深度和趣味性之間尋找最佳平衡點,在生動幽默中講述數據挖掘的核心思想、關鍵技術以及一些在其它相關課程和教科書中少有涉及的重要知識點,適合對大數據和數據科學感興趣的各專業學生以及工程技術人員學習。
  • python字典操作大全,學習python第7天
    python字典python字典概念:python字典可以用來存儲任意類型對象,python字典都是由一個鍵和一個值組成的「鍵值對」,兩者之間用冒號隔開,結構如:sco = {'name':'小明','age
  • OpenCV中的快速直線檢測
    在python的opencv相關的安裝包中,opencv-python 包含主要模塊,opencv-contrib-python 包含主要模塊以及一些擴展模塊。但這兩個模塊並不兼容,如果已經安裝過opencv-python,需要先卸載,再安裝opencv-contrib-python。
  • biopython簡介
    OBF的成員項目部分如下 biopython基於python這個簡單易學的程式語言,提供了一系列處理常見生物信息任務的接口,具體可以完成以下幾種任務 1. 對常用的文件格式,比如fasta, blast等,進行讀寫 2.
  • 收藏!最全從Python小白到大牛,要走的路這裡都有(一)
    收藏!長文!從Python小白到大牛,要走的路這裡都有面向項目的學習是學習編碼的最佳方法。Python是當今最需求的語言,為了幫助您學習它,以下是一些您可以探索的最重要的Python項目:Python遊戲Python圖像編程CIFAR10在Python中使用TensorFlow開始看吧,和從開始到放棄說再見俗話說的好,沒吃過豬肉還沒見過豬跑?
  • 老電工總結:電力電纜常見的5種故障,附檢測方法,建議收藏!
    沈通電纜為大家找來了電力電纜常見的5種故障,附檢測方法,全部由老電工總結,很實用,建議收藏!電力電纜常見的5種故障為:1.機械性損傷機械性損傷引發電纜事故的比例很大。造成機械性損傷的原因有四種。電纜質量問題電纜材料選擇不良,製作粗糙,厚度不均,防水性差,在運輸過程中貯藏、密封不嚴導致電纜受潮也會造成電纜故障。5. 長期過載長期處於高電流運行的電力電纜,超負荷的運行導致電纜自身熱量過大,加之諸如雷電之類的外力衝擊,會使電纜產生故障。
  • python超聲波傳感_樹莓派超聲波傳感器python - CSDN
    超聲波測距應用廣泛,本次實戰通過樹莓派B+連接HC-SR04超聲波測距傳感器,用python GPIO控制傳感器完成距離測定,並將距離顯示在屏幕上。
  • 普通人學Python有意義嗎?學Python有前途嗎?-開課吧Python
    Pythonpython憑藉著第三方庫數量的龐大,其幾乎可以說是萬能的,對於普通人來說,數據表格excel基本上都有需要製作,而有一些編程基礎的,就可以使用庫openpyxl來實現excel表格的自動處理和生成,同時除了excel之外,針對word,ppt等python都有對應的庫。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • 【實驗】OpenCV/Python/dlib眨眼檢測
    今天我們來使用面部標誌和OpenCV 檢測和計算視頻流中的眨眼次數。為了構建我們的眨眼檢測器,我們將計算一個稱為眼睛縱橫比(EAR)的指標,由Soukupová和Čech在其2016年的論文「使用面部標誌實時眼睛眨眼檢測」中介紹。
  • Python數據類型串講(中)
    序列中每個位置的元素都有其對應的唯一編號,也就是說我們可以通過元素的位置標識,去搜索到該元素。python中的內建序列有6種:列表、元祖、字符串、Unicode字符串、xrange對象、buffer對象,其中列表和元祖是最常見的序列,應重點掌握。字符串在上一篇文章中已簡單介紹,下面將以字符串為例,對序列的通用操作進行詳講。
  • 「黑技能」——python檢測u盤並「偷偷」複製內容!
    這兩天在網上又發現python一個比較好玩的庫psutil,它是用來輕鬆獲取系統運行的進程和系統利用率,包括CPU、內存、磁碟、網絡等信息。也就是說用它來獲取硬體狀態信息的唄!然後一個「邪念」浮出腦海——打槍的不要,「偷偷」拷貝別人U盤內容!
  • Python開發簡單爬蟲【學習資料總結】
    將URL存放在關係型數據中 將URL存儲在緩存資料庫中 三、網頁下載器和urllib2模塊 網頁下載器類似於瀏覽器,會將網際網路對應的網頁以HTML的形式下載到本地,存儲成本地文件或內存字符串,然後進行後續的分析。