Python实现识别图像中人物的示例代码

  

下面我来为您讲解Python实现识别图像中人物的完整攻略,可以分为以下几个步骤:

1. 安装所需库

首先,需要安装以下库:opencv-python、numpy和imutils。您可以通过以下命令来安装它们:

pip install opencv-python
pip install numpy
pip install imutils

2. 下载预训练模型

其次,需要从互联网上下载预训练模型。通常使用的预训练模型是基于Haar特征的级联分类器。您可以从以下网站获取一些预训练模型:

  1. OpenCV官方文档:https://docs.opencv.org/3.4/db/d28/tutorial_cascade_classifier.html
  2. Github上的预训练模型:https://github.com/opencv/opencv/tree/master/data/haarcascades

在这里,我们下载人脸检测的预训练模型haarcascade_frontalface_default.xml,将其放在与Python代码相同的文件夹中。

3. 导入所需库和文件

接下来,在Python代码中,导入所需的库和文件,其中包括:

import cv2
import imutils

4. 加载图像

加载您要识别的图像。可以通过以下代码实现:

image = cv2.imread('path/to/image.jpg')

5. 转化为灰度图像

刚才下载的预训练模型是基于灰度图像的,因此需要将图像转换为灰度图像。可以通过以下代码实现:

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

6. 加载预训练模型

加载预训练模型,可通过以下代码实现:

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

7. 使用预训练模型检测人脸

使用预训练模型检测人脸,并将结果储存在faces变量中。可通过以下代码实现:

faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

其中,detectMultiScale()用于检测人脸,scaleFactor是每次缩小图像时的比例,minNeighbors定义多少个相邻矩形才认为是人脸,minSize定义人脸的最小大小。

8. 绘制检测出的人脸

最后,将检测出的人脸用矩形框标记出来,可通过以下代码实现:

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

这段代码使用cv2.rectangle()函数将矩形框添加到图像中,其中参数依次为:图像image,矩形左上角坐标(x, y),右下角坐标(x+w, y+h),颜色(0, 0, 255),线宽2。

以下是一个示例代码,用于检测图片中的人脸并在人脸周围画一个矩形框:

import cv2
import imutils

image = cv2.imread('path/to/image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

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

faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

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

cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

另外一个示例代码可以用于实时检测摄像头中的人脸:

import cv2
import imutils

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

while True:
    _, frame = camera.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

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

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

camera.release()
cv2.destroyAllWindows()

希望这些示例可以帮助您理解如何使用Python实现识别图像中人物的功能。

相关文章