50行Python代码实现人脸检测功能

  

50行Python代码实现人脸检测功能

本文将详细介绍如何使用OpenCV和Python编写50行代码实现人脸检测功能。在此之前,你需要在你的电脑上安装好Python3OpenCVnumpy库。如果你没有安装这些库,你可以在命令行中使用以下命令进行安装:

# 安装Python3
sudo apt-get install python3

# 安装OpenCV
pip install opencv-python

# 安装numpy
pip install numpy

下面就让我们开始吧。

步骤一:导入必要的库

import cv2
import numpy as np

在这一步中,我们导入了OpenCV和numpy库。

步骤二:加载分类器

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

在这一步中,我们将训练好的haar级联分类器加载到了内存中,这个分类器可以用于检测出人脸。

步骤三:读取图像

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

在这一步中,我们读取了一张图片,并将其存储在内存中。

步骤四:将图像转换为灰度

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

在这一步中,我们将彩色图像转换为灰度图像。人脸识别算法在灰度图像上的表现更加优秀。

步骤五:检测人脸

faces = face_cascade.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('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这一步中,我们展示了最终的检测结果,包含了标记出的人脸。

下面是完整代码:

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('my_image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.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('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

接下来我会给出两个示例说明如何使用本文介绍的人脸检测代码功能:

示例一:检测一张图片中的人脸

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('my_image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.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('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

示例二:使用摄像头进行人脸实时检测

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)

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

    cv2.imshow('frame',frame)
    if cv2.waitKey(1) == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

以上便是如何使用50行Python代码实现人脸检测功能的完整攻略了。

相关文章