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

2023-12-18Python编程
36

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代码实现人脸检测功能的完整攻略了。

The End

相关推荐

解析Python中的eval()、exec()及其相关函数
Python中有三个内置函数eval()、exec()和compile()来执行动态代码。这些函数能够从字符串参数中读取Python代码并在运行时执行该代码。但是,使用这些函数时必须小心,因为它们的不当使用可能会导致安全漏洞。...
2023-12-18 Python编程
117

Python下载网络文本数据到本地内存的四种实现方法示例
在Python中,下载网络文本数据到本地内存是常见的操作之一。本文将介绍四种常见的下载网络文本数据到本地内存的实现方法,并提供示例说明。...
2023-12-18 Python编程
101

Python 二进制字节流数据的读取操作(bytes与bitstring)
来给你详细讲解下Python 二进制字节流数据的读取操作(bytes与bitstring)。...
2023-12-18 Python编程
120

Python3.0与2.X版本的区别实例分析
Python 3.x 是 Python 2.x 的下一个重大版本,其中有一些值得注意的区别。 Python 3.0中包含了许多不兼容的变化,这意味着在迁移到3.0之前,必须进行代码更改和测试。本文将介绍主要的差异,并给出一些实例来说明不同点。...
2023-12-18 Python编程
34

python如何在终端里面显示一张图片
要在终端里显示图片,需要使用一些Python库。其中一种流行的库是Pillow,它有一个子库PIL.Image可以加载和处理图像文件。要在终端中显示图像,可以使用如下的步骤:...
2023-12-18 Python编程
91

Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
在Python中,我们可以使用Pillow库来进行图像处理。具体实现两幅图像合成一幅图像的方法如下:...
2023-12-18 Python编程
103