python3 1. 利用opencv库进行人脸检测 学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mcyJacky/article/details/84931884

前言

     计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的github或者码云上下载到,gitbub地址:https://github.com/mcyJacky/DeepLearning-CV,如有问题,欢迎指出~。

一、人脸检测简单示例

1.1 构建简单的读取图片的模块

     先构建一个通用模块,用来读取并显示图片,模块命名为imutils
     使用到python的相关库包括:计算机视觉库cv2、绘图库matplotlib.

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

1.2 读取并显示图片功能

     利用通用模块寒素,读取并显示一张测试图片。

from imutils import *

image = imread('face.png')
show(image)
print(image.shape)

'''打印结果:
(289, 514, 3)
'''

     显示结果如图1.1所示:

图1.1 读取显示的测试图片

1.3 使用Haar特征和级联分类器进行人脸检测

     Haar 特征值反映了图像的灰度变化情况,实验证明可以将极少数的特征结合起来,形成有效的分类器。如:脸部的一些特征由矩阵特征简单描述。

#级联分类器:xml文件 包括人脸的特征,和每个阶段的特征等
detector = cv2.CascadeClassifier('haarcascade_frontalface_alt.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)

     显示结果如图1.2所示:

图1.2 单人人脸检测结果

     由图片1.2检测结果可知,利用计算机视觉库opencv中的级联分类器能够进行单人人脸检测。那能否对多张人脸进行检测呢?下面是进行图片中多人人脸检测的结果:

#构建人脸检测函数
def facedetect(image):
    image = imread(image)
    #级联分类器
    detector = cv2.CascadeClassifier('haarcascade_frontalface_alt.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')

     显示结果如图1.3所示:

图1.2 多人人脸检测结果

【参考】:
     1. 城市数据团课程《AI工程师》计算机视觉方向
     2. 《OpenCV3编程入门》 毛星云
     3. 《OpenCV3计算机视觉:Python语言实现》 JoeMinichino


转载声明:
版权声明:非商用自由转载-保持署名-注明出处
署名 :mcyJacky
文章出处:https://blog.csdn.net/mcyJacky

猜你喜欢

转载自blog.csdn.net/mcyJacky/article/details/84931884