python中用opencv实现人脸识别

热门标签

, ,
admin

发表文章数:3278

人脸检测与是人工智能的一部分,现在的人脸识别有传统的人脸识别技术以及神经网路两种,不论哪种在人脸识别的准确率都不是100%,人脸识别的难度在算法上已经很成熟了,识别率也是非常的高,限制在于输入数据的不可靠性,例如传输画质损失,录入设备的采样品质太差,另外光线环境也是影响人脸识别的一个因素,太强或者太弱的光线都会使得人脸识别准确率下降。

本次实验使用的是基于Haar特征的AdaBoost分类器来实现人脸检测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# -*- coding: UTF-8 -*-
"""
opencv实现人脸识别
参考:
xml 来源
"""
import cv2
# 待检测的图片路径
imagepath="./img/huge1.jpg"
image = cv2.imread(imagepath)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
'''
# 获取人脸识别训练数据
对于人脸特征的一些描述,opencv在读取完数据后很据训练中的样品数据,
就可以感知读取到的图片上的特征,进而对图片进行人脸识别。
xml数据下载,
'''
face_cascade = cv2.CascadeClassifier(r'./resSet/haarcascade_frontalface_default.xml')
leye_cascade = cv2.CascadeClassifier(r'./resSet/haarcascade_lefteye_2splits.xml')
reye_cascade = cv2.CascadeClassifier(r'./resSet/haarcascade_righteye_2splits.xml')
eye_cascade = cv2.CascadeClassifier(r'./resSet/haarcascade_eye.xml')
#cv2.namedWindow("img",0);
# 探测人脸
# 根据训练的数据来对新图片进行识别的过程。
faces = face_cascade.detectMultiScale(
  gray,
  scaleFactor = 1.15,
  minNeighbors = 5,
  minSize = (5,5),
)
eyes = eye_cascade.detectMultiScale(
  gray,
  scaleFactor = 1.15,
  minNeighbors = 3,
  minSize = (3,3),
)
# 我们可以随意的指定里面参数的值,来达到不同精度下的识别。返回值就是opencv对图片的探测结果的体现。
# 处理人脸探测的结果
print ("发现{0}个人脸!".format(len(faces)))
#标识人脸
for(x,y,w,h) in faces:
    cv2.rectangle(image,(x,y),(x w,y h),(0,255,0),2)
    cv2.rectangle(gray, (x, y), (x   w, y   h), (02550), 2)
    roi_face = gray[y:y   h, x:x   w]
    roi_color = image[y:y   h, x:x   w]
    # 框住眼睛 为了减少运算量 把脸部作为输入
    eyes = eye_cascade.detectMultiScale(
                roi_face,
                scaleFactor = 1.66,
                minNeighbors = 6,
                minSize = (6,5),
            )
    for (e_x, e_y, e_w, e_h) in eyes:
        cv2.rectangle(roi_color, (e_x, e_y), (e_x   e_w, e_y   e_h), (02550), 2)
        cv2.rectangle(roi_face, (e_x, e_y), (e_x   e_w, e_y   e_h), (02550), 2)
cv2.imshow("img",image)
cv2.imshow("gray",gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行效果如图(注意图片要自己选一张,直接网络百度就行):

python中用opencv实现人脸识别

未经允许不得转载:作者:admin, 转载或复制请以 超链接形式 并注明出处 夜河资源网
原文地址:《python中用opencv实现人脸识别》 发布于2019-12-12

分享到:
赞(0) 打赏

评论 抢沙发

1 + 4 =


撰写不易~如果您觉得文章对您有帮助的话可以打赏我哦~谢谢亲亲~

支付宝扫一扫打赏

微信扫一扫打赏

外服网游加速器破解版
包含腾讯网游加速器、海豚网游加速器等八款知名加速器,可加速外服游戏,永久包售后包更新,不定时添加新款破解版加速器!
切换注册

登录

忘记密码 ?

切换登录

注册