<optgroup id="m04aa"><small id="m04aa"></small></optgroup><center id="m04aa"><wbr id="m04aa"></wbr></center><center id="m04aa"></center>
<optgroup id="m04aa"><small id="m04aa"></small></optgroup>
<noscript id="m04aa"></noscript>
<optgroup id="m04aa"></optgroup>
訂閱
糾錯
加入自媒體

學習使用計算機視覺進行人臉檢測

2022-03-24 15:00
磐創AI
關注

概述

在本文中,我們將制作一個人臉檢測應用程序,它將檢測圖像中的單個人臉并同時檢測多個人臉,因此,整篇文章將重點介紹使用計算機視覺進行人臉檢測。在這里,我們將使用 HAAR 級聯分類器進行檢測;出于檢測目的,我們將學習檢測圖像中人臉所涉及的所有技術和過程。

人臉檢測的應用

1. 人臉識別:人臉識別是進一步做的事情,即在人臉檢測之后,進行人臉識別。

2. 濾鏡:如今,我們生活在社交媒體的世界里,我們可以看到全球市場上有各種各樣的濾鏡和有趣的應用程序;要進行此類應用,我們還需要先檢測人臉,然后應用濾鏡。

3. 人臉解鎖應用程序:我們經常在手機中使用此功能,但我們知道,這也需要檢測人臉。

所以讓我們開始吧!

加載必要的庫

# Import the necessary libraries

import numpy as np

import cv2 

import matplotlib.pyplot as plt

%matplotlib inline

加載圖像

#  Loading the image to be tested

test_image = cv2.imread('data/baby1.png')

# Here we are converting the colored image into gray image

if(test_image is not None):

   test_image_gray = cv2.cvtColor(test_image, cv2.COLOR_BGR2GRAY)

test_image_gray

# Displaying grayscale image

plt.imshow(test_image_gray, cmap='gray')

輸出:

我們很清楚 OpenCV 的檢測器功能默認讀取 BGR 格式的現有圖像,但最終用戶通常不會考慮 BGR 格式;因此我們需要將 BGR 格式的圖像轉換為 RGB 格式,即彩色圖像,它具有負責創建彩色圖像的所有 3 個通道(R-Red、G-Green、B-Blue)。

因此,我們將創建一個函數來將 BGR 圖像轉換為 RGB 圖像。

def convertToRGB(image):

   return cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

HAAR 級聯文件

HAAR 級聯是計算機視覺領域的一個很好的術語。當我們談論 HAAR 級聯分類器時,不僅僅是人臉預訓練分類器,我們可以得到經過訓練來檢測微笑、汽車、公共汽車的分類器,這些級聯文件總是采用 XML 文件格式,通常我們使用現有的級聯文件,但事實上我們也可以在這里創建它們,為了簡單起見,我們將使用 HAAR 級聯正面人臉分類器來檢測圖像中人臉的位置。

加載正面分類器

haar_cascade_face = cv2.CascadeClassifier('data/haarcascades/haarcascade_frontalface_alt2.xml')

人臉檢測

對于人臉檢測,我們需要從坐標中獲取人臉的坐標,我的意思是 X、Y 坐標以及人臉的高度和寬度,然后我們可以在給定的坐標下在圖像上繪制一個矩形,我們有detectMultiScale函數,它將為我們提供所有需要的坐標來規劃矩形。

face_coordinate = haar_cascade_face.detectMultiScale(test_image_gray, scaleFactor = 1.2, minNeighbors = 5);

# Let us print the no. of faces found

print('Faces found: ', len(face_coordinate))

輸出:

Faces found:  1

所以之前,在使用 detectMultiScale 函數時,我們獲取了圖像的 x 坐標和 y 坐標以及高度和寬度,現在我們將使用這些點循環遍歷圖像的每個點并在臉部上繪制厚度為 2 個像素的矩形。

for (x_face,y_face,w_face,h_face) in face_coordinate:

    cv2.rectangle(test_image, (x_face, y_face), (x_face+w_face, y_face+h_face), (0, 255, 0), 2)

由于現在已經完成了完整的過程,是時候檢查我們到目前為止執行的所有步驟是否正確,在Matplotlib 的 show 函數的幫助下,我們將看到處理后的圖像,看看它是否可以檢測到圖像中的人臉。

#convert image to RGB and show image

plt.imshow(convertToRGB(test_image))

輸出:

自動人臉檢測過程的函數

def detect_faces(cascade, test_image, scaleFactor = 1.1):

   # Here with the help of copy() function we will hold the copy of the original image

   image_copy = test_image.copy()

   # Here with the help of cvtColor function we are converting the image from BGR format to gray image

   gray_image = cv2.cvtColor(image_copy, cv2.COLOR_BGR2GRAY)

   # Finally we are using the haar cascade function with detectMultiscale to get the coordiates of the faces in the given image

   faces_rect = cascade.detectMultiScale(gray_image, scaleFactor=scaleFactor, minNeighbors=1)

   for (x_face, y_face, w_face, h_face) in faces_rect:

       cv2.rectangle(image_copy, (x_face, y_face), (x_face+w_face, y_face+h_face), (0, 255, 0), 2)

   return image_copy

代碼分解:在這里,我們構建了檢測人臉的函數;讓我們看看這里發生了什么:

1. 首先,我們使用copy函數來存儲原始圖像,這樣任何不需要的更改都不應該存在于原始圖像中

2. 然后我們將BGR 格式的圖像轉換為灰度圖像,因為 cv2 以灰度格式讀取圖像只是為了更好的可讀性。

3. 然后,在 detectMultiScale 函數的幫助下, 評論中已經提到了這一點。

4. 最后,利用 detectMultiScale 函數得到的坐標,繪制出 2 像素厚的綠色矩形

在新圖像上測試

#loading image

test_image2 = cv2.imread('data/baby2.png')

#call the function to detect faces

faces = detect_faces(haar_cascade_face, test_image2)

#convert to RGB and display image

plt.imshow(convertToRGB(faces))

輸出:

檢測多個人臉的測試

#loading image

test_image2 = cv2.imread('data/group.png')

#call the function to detect faces

faces = detect_faces(haar_cascade_face, test_image2)

#convert to RGB and display image

plt.imshow(convertToRGB(faces))

輸出:

保存圖像

cv2.imwrite('image1.png',faces)

輸出:

True

結論

1. 因此,在使用計算機視覺進行人臉檢測時,我們首先導入必要的庫并加載我們需要執行人臉檢測的圖像。

2. 然后我們了解了 HAAR 級聯文件和正面分類器。除此之外,還學習了 detectMultiScale 函數的使用。

3. 當我們意識到整個檢測過程非常耗時的時候,我們嘗試構建一個函數來自動化這個過程。

4. 然后使用函數,我們可以檢測到圖像的多張人臉。

5. 最后,我們保存了檢測到的人臉圖像。

因此,以上是使用計算機視覺準備人臉檢測應用程序時必須遵循的步驟

       原文標題 : 學習使用計算機視覺進行人臉檢測

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

發表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關注公眾號
OFweek人工智能網
獲取更多精彩內容
文章糾錯
x
*文字標題:
*糾錯內容:
聯系郵箱:
*驗 證 碼:

粵公網安備 44030502002758號

太大太粗太爽免费视频
<optgroup id="m04aa"><small id="m04aa"></small></optgroup><center id="m04aa"><wbr id="m04aa"></wbr></center><center id="m04aa"></center>
<optgroup id="m04aa"><small id="m04aa"></small></optgroup>
<noscript id="m04aa"></noscript>
<optgroup id="m04aa"></optgroup>