基于cv2模块的人脸识别

通过python中的cv2模块进行人脸识别,需要对cv2模块有一定的认识。

imread()方法:ret,image=cv2.imread(filename,[,flags]),其中filename是图像文件的路径及名称(图像文件的路径为绝对路径),flags是图像处理的标志位(通知程序以何种方式加载图片),通常flags选取默认值。imread()方法读取出的图片格式为BGR格式,并不是通常的RGB格式。imread()方法的两个返回值,ret为布尔类型,表示是否正确打开图片;image为图片的三维矩阵。

imshow()方法:imshow()方法用来进行图像显示,方法中包含两个参数,参数一为图像显示窗体的名称,参数二为图像内容矩阵。

cvtColor()方法:cvtColor(p1,p2)方法用来改变色彩空间,参数p1是需要转换的图片,参数p2是转换成的格式。对于BGR—>灰色转换,我们使用标志cv2.COLOR_BGR2GRAY;同样,对于BGR —>HSV,我们使用标志cv2.COLOR_BGR2HSV。

rectangle()方法:cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2),image是输入的图像;(x,y)是矩阵的坐上点坐标;(x+w,y+h)是矩阵的右下点坐标;color:(0,255,0)是画线对应的颜色,由于imread()方法读取出的图像为BGR格式,所以(0,255,0)对应的颜色为绿色;2是画线对应的宽度。

OpenCV中人脸识别分类器:cv2.CascadeClassfier(“haarcascade_frontalface_default.xml”)。

识别人脸的步骤:(1)加载分类器(分类器事先放在工程目录里)haarcascade_frontalface_default.xml;(2)调用detectMultiScale()函数进行检测,调整参数可以使检测结果更加准确;(3)把检测到的人脸用矩形框出来。

cv2.CascadeClassfier.detectMultiScale(image,scaleFactor,minNeighbors,minSize,maxSize)—>objects
image:需要检测的图像
scaleFactor:每次图像尺寸减小的比例
minNeighbors:每一个目标至少被检测到3次才算检测到目标
minSize:目标的最小尺寸
maxSize:目标的最大尺寸

粗略地介绍cv2模块中部分方法的使用之后,接下来我们通过代码进行演示。

import cv2

filepath = "frame0.jpg"
image = cv2.imread(filepath)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
classfier = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
faceRect = classfier.detectMultiScale(gray, scaleFactor=1.6, minNeighbors=3,minSize=(50,50))
if len(faceRect):
    for face in faceRect:
        x, y, w, h = face
        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow("frame0", image)
c = cv2.waitKey(10)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述
通过以上代码,简单地实现了人脸识别。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值