版权声明:本文为博主原创文章,未经博主允许不得转载。 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.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检测结果可知,利用计算机视觉库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. 城市数据团课程《AI工程师》计算机视觉方向
2. 《OpenCV3编程入门》 毛星云
3. 《OpenCV3计算机视觉:Python语言实现》 JoeMinichino
转载声明:
版权声明:非商用自由转载-保持署名-注明出处
署名 :mcyJacky
文章出处:https://blog.csdn.net/mcyJacky