week2 人脸识别

任务 

在Windows10系统下,用python,在jupyter notebook 结合cv2、dlib、face_recognition、matplotlib.pyplot等库通过HOG或CNN算法进行人脸识别,人脸对齐和人脸匹配。

目录

Ⅰ.OpenCV、face_recogniton、dlib安装

Ⅱ.仅依赖于cv2人脸识别

Ⅲ.依赖于face_recognition的人脸识别

Ⅳ.人脸对齐

Ⅴ.人脸匹配 


Ⅰ.OpenCV、face_recogniton、dlib安装

在左下角搜索中输入cmd,调出命令指示符,分别输入以下几行代码,以安装各库。

pip install opencv-python

pip install dlib

pip install face_recognition

若有报错,根据报错提示进行操作,例如在安装后两个库时,报错提示必须在xx库基础上才能安装,如此,则先安装这个提示的库。

Ⅱ.仅依赖于cv2人脸识别

导入所需各库。

安装时叫做OpenCV,导入时叫cv2。

导入os模块,以修改并判断当前文件所在位置。

os.chdir()修改当前工作路径;os.getcwd()返回当前工作路径。

当前工作路径和当前文件路径无关。

import cv2
import os
import matplotlib.pyplot as plt
os.chdir("G:\大三上\各门课作业\python")
print(os.getcwd())

 定义一个函数detect。

cv2.CascadeClassifier()调用人脸识别分类器,根据OpenCV库所在位置找到目标识别依据的Haar特征分类器,包括眼睛、嘴巴、微笑等。此处以正脸为例。

cv2.imread(filepath,flags)读入图片。filepath为图片路径。flags为读入图片的方式,可省略。

flags一般分三种情况:

  • cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
  • cv2.IMREAD_GRAYSCALE:读入灰度图片
  • cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道

cv2.cvtColor()颜色转换:

  • 灰度图像转换为彩色图像:cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
  • 彩色图像转换为灰度图像:cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

 face_cascade.detectMultiScale()参数:

  • image:待检测图片(指定要查找人脸位置的图像矩阵,为numpy.ndarray),一般为灰度图像加快检测速度;
  • objects:被检测物体的矩形框向量组;
  • scaleFactor:在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%;
  • **minNeighbors:构成检测目标的相邻矩形的最小个数(默认为3个)。如果组成检测目标的小矩形的个数和小于 min_neighbors - 1 都会被排除。如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,这种设定值一般用在用户自定义对检测结果的组合程序上;
  • flags:要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,因此这些区域通常不会是人脸所在区域;
  • minSize和maxSize:限制得到的目标区域的范围。

 此处的img_gray即待检测灰度图片;faces为识别出脸部的矩形框向量组,几张脸就有几个矩形框,向量组里就有几组向量。

def detect(filename):
    face_cascade=cv2.CascadeClassifier("F:\Python-3.8.2\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml")
    img=cv2.imread(filename)
    img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    faces=face_cascade.detectMultiScale(img_gray,1.1,3)
    print(faces)

for 循环,遍历faces矩形框向量组里每一组矩形(即每一张脸)。faces四个参数,按顺序分别矩形框的上边、后边、下边、左边边界的位置。

cv2.rectangle()各参数含义依次是:图片、矩形左上顶点位置、矩形右上顶点位置、颜色、矩形边框粗细

detect("beauty.jpg")调用函数detect。图片路径应与当前工作路径保持一致。

for(x,y,w
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值