利用Python实现人脸识别检测

人脸检测是计算机视觉中的一个重要的部分,下面就通过Python来实现一个简易的人脸识别的程序。

基本思想:

通过Python,采用识别人脸,然后标记出来,实现人脸检测的结果。

方法是调用opencv训练好的分类器和自带的检测函数检测人脸。

主要流程:

  1. 加载分类器。我这里用的是haarcascade_frontalface_default.xml。GitHub上的地址为https://github.com/opencv/opencv/blob/master/data/haarcascades
  2. 调用detectMultiScale()函数检测,调整函数的参数可以使检测结果更加精确。
  3. 把检测到的人脸等用矩形(或者圆形等其他图形)画出来。

示例代码:

import cv2
import matplotlib.pyplot as plt

def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show()

def imread(image):
    image = cv2.imread(image)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    return image

def facedetect(image):
    image = imread(image)
    # 级联分类器
    detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
    rects = detector.detectMultiScale(image, scaleFactor=1.1, minNeighbors=2, minSize=(10, 10),
                                      flags=cv2.CASCADE_SCALE_IMAGE)

    for (x, y, w, h) in rects:
        # 画矩形框
        cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

    show(image)


facedetect("Solvay.jpg")

这里面最主要的一个函数就是detectMultiScale()。文档中的解释如下:利用Python实现人脸识别检测_第1张图片

  1. image表示的是要检测的输入图像
  2. objects表示检测到的人脸目标序列
  3. scaleFactor表示每次图像尺寸减小的比例
  4. minNeighbors表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸),
  5. minSize为目标的最小尺寸
  6. minSize为目标的最大尺寸

原始图像为 

利用Python实现人脸识别检测_第2张图片

运行代码后的结果如下:

利用Python实现人脸识别检测_第3张图片

 

觉得有用不妨点个赞哦~ 

你可能感兴趣的:(Python学习之路)