人臉檢測是一種識別數字圖像中人類面孔的技術。人臉檢測是一項相對成熟的技術,還記得在您的數碼相機的舊日子里,當您通過取景器看時?您會看到圍繞在取景器中的人們臉部的矩形框。在進行人臉識別之前,您需要學習的技術就是人臉檢測,也就是試圖給臉部賦予一個名字。
對于人臉檢測,其中最著名的算法之一是被稱為Viola-Jones人臉檢測技術,通常稱為Haar級聯。Haar級聯在深度學習流行之前就被發明了,是最常用于檢測人臉的技術之一。
盡管檢測和識別人臉的能力確實很酷,但它肯定涉及很多道德問題。在將面部識別應用到項目中之前,您需要注意一些關切事項。這些關切事項包括隱私(人臉檢測可用于在未經同意的情況下追蹤人們的活動)、偏見(人臉檢測可能對不同種族、性別或年齡的個體存在偏見)以及濫用(捕捉到的面部可能被用于其他非法用途或惡意目的)。因此,盡管本文側重于人臉檢測的技術能力,但在將其應用到工作中之前,您應該仔細考慮道德和倫理問題。
以下是一些低風險項目,可以在其中實施人臉檢測/識別:
然而,在某些應用中使用人臉識別具有嚴重的道德影響。以下是一些例子:
Haar級聯分類器用于檢測其經過訓練的對象。以下是Haar面部分類器的工作原理的高級概述:
幸運的是,不需要知道Haar級聯是如何工作的,OpenCV可以直接使用預訓練的Haar級聯進行人臉檢測,以及用于識別其他對象的其他Haar級聯。預定義的Haar級聯列表可在GitHub上找到,鏈接為:https://github.com/opencv/opencv/tree/master/data/haarcascades。
開源計算機視覺(OpenCV)是由英特爾最初開發的開源計算機視覺和機器學習軟件庫。它旨在為計算機視覺應用程序提供共同的基礎架構,并加速機器感知在商業產品中的使用。OpenCV附帶了幾個預訓練的Haar級聯,可以檢測眼睛、臉部、俄羅斯車牌、微笑等。對于人臉檢測,您將需要`haarcascade_frontalface_default.xml`文件,可以從上文的GitHub鏈接中下載。
讓我們嘗試使用OpenCV進行人臉檢測。首先,您需要使用以下命令進行安裝:
!pip install opencv-python
對于本文示例,您需要創建一個名為`face_detection.py`的文件。首先,通過以下語句導入OpenCV庫:
import cv2
接下來要做的是連接到您的網絡攝像頭并在屏幕上顯示圖像:
import cv2# default webcamstream = cv2.VideoCapture(0)while(True): # Capture frame-by-frame (grabbed, frame) = stream.read() # Show the frame cv2.imshow("Image", frame) key = cv2.waitKey(1) & 0xFF if key == ord("q"): # Press q to break out of the loop break# Cleanupstream.release()cv2.waitKey(1)cv2.destroyAllWindows()cv2.waitKey(1)
為引用您的網絡攝像頭,請使用`VideoCapture`類并傳遞一個數字,表示您的攝像頭實例(0表示第一個攝像頭,1表示第二個攝像頭,依此類推)。
stream = cv2.VideoCapture(0)
為了持續捕獲來自網絡攝像頭的輸入,使用一個無限循環(`while(True)`)讀取每一幀然后顯示它:
# Capture frame-by-frame (grabbed, frame) = stream.read() # Show the frame cv2.imshow("Image", frame)
為了使程序能夠優雅地退出,等待用戶在鍵盤上按鍵。當按下"q"鍵時,循環終止:
key = cv2.waitKey(1) & 0xFF if key == ord("q"): # Press q to break out of the loop break
然后進行清理工作:
# Cleanupstream.release()cv2.waitKey(1)cv2.destroyAllWindows()cv2.waitKey(1)
要運行程序,請轉到終端并鍵入:
$ python face_detection.py
現在您應該看到您的臉:
現在來玩個有趣的部分 —— 檢測臉部。首先,創建`CascadeClassifier`類的一個實例,并將`haarcascade_frontalface_default.xml`文件傳遞給它:
import cv2# for face detectionface_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
您需要復制`haarcascade_frontalface_default.xml`文件并將其放在與`face_detection.py`文件相同的文件夾中。您可以從https://github.com/opencv/opencv/tree/master/data/haarcascades下載XML文件。現在,您可以使用`detectMultiScale()`函數來檢測臉部:
while(True): # Capture frame-by-frame (grabbed, frame) = stream.read() #===============DETECTING FACES============ # Convert to grayscale gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Try to detect faces in the webcam faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5) # for each faces found for (x, y, w, h) in faces: # Draw a rectangle around the face color = (0, 255, 255) # in BGR stroke = 5 cv2.rectangle(frame, (x, y), (x + w, y + h), color, stroke) #===============DETECTING FACE============= # Show the frame cv2.imshow("Image", frame) key = cv2.waitKey(1) & 0xFF if key == ord("q"): # Press q to break out of the loop break
請注意`detectMultiScale()`函數中的以下參數:
您可以變化這兩個參數的值以確保正確檢測到人臉。
當檢測到臉部時,您希望在它們周圍畫出矩形:
# for each faces found for (x, y, w, h) in faces: # Draw a rectangle around the face color = (0, 255, 255) # in BGR stroke = 5 cv2.rectangle(frame, (x, y), (x + w, y + h), color, stroke)
當您重新運行`face_detection.py`文件時,現在應該能夠檢測到臉部了。
`face_detection.py`文件的完整內容如下:
import cv2# for face detectionface_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')# default webcamstream = cv2.VideoCapture(0)while(True): # Capture frame-by-frame (grabbed, frame) = stream.read() # Convert to grayscale gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Try to detect faces in the webcam faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5) # for each faces found for (x, y, w, h) in faces: # Draw a rectangle around the face color = (0, 255, 255) # in BGR stroke = 5 cv2.rectangle(frame, (x, y), (x + w, y + h), color, stroke) # Show the frame cv2.imshow("Image", frame) key = cv2.waitKey(1) & 0xFF if key == ord("q"): # Press q to break out of the loop break# Cleanupstream.release()cv2.waitKey(1)cv2.destroyAllWindows()cv2.waitKey(1)
希望這篇簡短的文章為您提供了一種使用Python和您的網絡攝像頭檢測臉部的簡單方法。確保下載`haarcascade_frontalface_default.xml`文件并將其放入與您的Python文件相同的文件夾中。
本文鏈接:http://www.www897cc.com/showinfo-26-93353-0.html基于 Python 的人臉檢測 :人臉識別的前提
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: ASP.NET Core 十大優秀第三方中間件推薦
下一篇: 事務中存在多線程,怎么處理?