python+opencv实现的简单人脸识别代码示例

  
  1. 安装Python和OpenCV

首先需要在计算机上安装Python和OpenCV,安装方法可以参照官方文档进行。

  1. 引入需要的库和模块

在Python程序的开头,需要引入需要的库和模块,例如:

import cv2
import numpy as np

其中,cv2就是OpenCV所提供的Python接口模块,numpy模块用于处理数值计算。

  1. 读取并处理图像

通过cv2模块中提供的imread()函数读取一张图片:

img = cv2.imread('image.png')

此时,img为OpenCV中的矩阵,可以直接对其进行处理,例如将图像进行灰度化:

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  1. 加载训练好的分类器

OpenCV中已经提供了许多训练好的人脸分类器模型,可以直接使用。例如,使用Haar分类器:

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
  1. 检测人脸

通过使用识别器,可以检测图像中的人脸,并用方框圈出来:

faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
for (x,y,w,h) in faces:
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)

其中,detectMultiScale()函数可以根据人脸在图像中的相对大小来调整分类器的判断。minNeighbors表示每个人脸矩形所应保留的邻居矩形的数量,由于多个相交的人脸对象会被检测到,因此需要保留最多的过滤信息。

  1. 显示结果

最后,将结果显示出来:

cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上就是基本的人脸识别代码示例,以下是两个实例说明:

示例1:

通过视频流检测人脸。即不仅可以读取和处理单幅图像,还可以实时检测视频流中出现的人脸。

示例2:

将人脸识别与电机运动控制相结合,实现“人脸追踪机器人”。即通过摄像头实时检测人脸,将检测到的人脸坐标与机器人运动方向进行连接,使机器人能够自动追踪人脸的运动。

相关文章