一、实验目的

通过python 语言编程设计人脸检测算法,以此人脸作为训练样本,训练目标人脸模型,进一步实现目标人脸的识别。通过上述编程促进学生理解并掌握人脸检测及识别的相关原理,同时培养学生的编程能力。

二、实验硬、软件环境

笔记本电脑,windows10系统,Visual Studio Code编辑器,opencv视觉库,numpy库, matplolib库。

三、实验内容及步骤

(一)实验内容

实现人脸的检测及目标人脸识别

采用DNN人脸检测和EigenFaces人脸识别器

(二)  实验过程

1.从包含目标人脸的图像中检测到人脸并保存到文件夹。

dnnnet = cv2.dnn.readNetFromTensorflow("opencv_face_detector_uint8.pb", "opencv_face_detector.pbtxt")

img = cv2.imread("xiaolihao.png")                        #读取图像

h, w = img.shape[:2]                                #获得图像尺寸

blobs = cv2.dnn.blobFromImage(img, 1.0, (300, 300), [104., 117., 123.], False, False) #创建图像块数据

dnnnet.setInput(blobs)                                 #将块数据设置为输入

detections = dnnnet.forward()

###将检测出可信度高的人脸图像保存到文件夹

faces += 1

box = detections[0, 0, i, 3:7] * np.array([w, h, w, h]) #获得人脸在图像中的坐标

x1,y1,x2,y2 = box.astype("int")

y = y1 - 10 if y1 - 10 > 10 else y1 + 10            #算出可信度输出位置

text = "%.3f"%(confidence * 100)+'%'

cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)#标注人脸范围

img2=img[ y1: y2,x1 : x2 ]

cv2.imwrite(str(j)+".jpg",img2)

2.读取目标人脸训练模型。

train_images=[img11,img12,img21,img22]                  #创建训练图像数组

labels=np.array([1,2,3,4])    #创建标签数组,1~4表示训练图像数组中人脸的身份

recognizer=cv2.face.EigenFaceRecognizer_create()#创建EigenFaces识别器

recognizer.train(train_images,labels)                       #执行训练操作

3.从包含目标人脸的图像中检测并识别目标人脸,在图像中进行标记,保存标记后的图像。

testimg=cv2.imread('test2.png',0)                           #打开测试图像

label,confidence=recognizer.predict(testimg)                #识别人脸

print('匹配标签:',label)

print('可信程度:',confidence)

b=label               #保存标记后的图像

if b==1:

cv2.imwrite('biaoji.png',img11)

elif b==2:

cv2.imwrite('biaoji.png',img12)

elif b==3:

cv2.imwrite('biaoji.png',img21)

elif b==4:

cv2.imwrite('biaoji.png',img22)

代码:(注意对图像的像素要求很高,如xiao1.png像素都控制在120*160)

renlianjiance1.py: #DNN人脸检测

import cv2

import numpy as np

from matplotlib import pyplot as plt

dnnnet = cv2.dnn.readNetFromTensorflow("opencv_face_detector_uint8.pb", "opencv_face_detector.pbtxt")

img = cv2.imread("xiaolihao.png")                     #读取图像

h, w = img.shape[:2]                                #获得图像尺寸

blobs = cv2.dnn.blobFromImage(img, 1.0, (300, 300),     #创建图像的块数据

[104., 117., 123.], False, False)

dnnnet.setInput(blobs)                               #将块数据设置为输入

detections = dnnnet.forward()                         #执行计算,获得检测结果

faces = 0

j=0

for i in range(0, detections.shape[2]):        #迭代,输出可信度高的人脸检测结果

confidence = detections[0, 0, i, 2]       #获得可信度

if confidence > 0.6:                  #输出可行度高于80%的结果

faces += 1

box = detections[0, 0, i, 3:7] * np.array([w, h, w, h]) #获得人脸在图像中的坐标

x1,y1,x2,y2 = box.astype("int")

y = y1 - 10 if y1 - 10 > 10 else y1 + 10            #计算可信度输出位置

text = "%.3f"%(confidence * 100)+'%'

cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)  #标注人脸范围

img2=img[ y1: y2,x1 : x2 ]

cv2.imwrite(str(j)+".jpg",img2)

j=j+1

cv2.putText(img,text, (x1, y),                    #输出可信度

cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 0, 255), 2)

cv2.imshow('faces',img)

cv2.waitKey(0)

renlianshibie2.py:

# 使用EigenFaces人脸识别器

import cv2

import numpy as np

#读入训练图像

img11=cv2.imread('xiao0.png',0)                         #打开图像,灰度图

img12=cv2.imread('xiao1.png',0)                         #打开图像,灰度图

img21=cv2.imread('xiao2.png',0)                         #打开图像,灰度图

img22=cv2.imread('xiao3.png',0)                         #打开图像,灰度图

train_images=[img11,img12,img21,img22]                 #创建训练图像数组

labels=np.array([1,2,3,4])       #创建标签数组,0~1表示训练图像数组中人脸的身份

recognizer=cv2.face.EigenFaceRecognizer_create()    #创建EigenFaces识别器

recognizer.train(train_images,labels)                       #执行训练操作

testimg=cv2.imread('test2.png',0)                          #打开测试图像

label,confidence=recognizer.predict(testimg)                 #识别人脸

print('匹配标签:',label)

print('可信程度:',confidence)

b=label

if b==1:

cv2.imwrite('biaoji.png',img11)

elif b==2:

cv2.imwrite('biaoji.png',img12)

elif b==3:

cv2.imwrite('biaoji.png',img21)

elif b==4:

cv2.imwrite('biaoji.png',img22)

目标人脸检测与识别(计算机视觉)相关推荐

  1. 腾讯AI Lab刷新人脸检测与识别两大测评国际记录,技术日调用超六亿

    来源:腾讯AI实验室 概要:人脸检测是让机器找到图像视频中所有人脸并精准定位其位置信息,人脸识别是基于人脸图像自动辨识其身份,两者密切相关,前者是后者的前提和基础. 腾讯AI Lab在国际最大.最难的 ...

  2. 初学入门 | 一种快速准确的人脸检测、识别和验证系统

    即将迎来了2019世界人工智能大会,相信这个会议又一次推动人工智能的发展,有兴趣的同学可以去参加感受一下人工智能的热度,绝不会低于这个夏天的高温. 今天"计算机视觉战队"为大家分析 ...

  3. 一种快速准确的人脸检测、识别和验证系统(入门)

    即将迎来了2019世界人工智能大会,相信这个会议又一次推动人工智能的发展,有兴趣的同学可以去参加感受一下人工智能的热度,绝不会低于这个夏天的高温. 今天"计算机视觉战队"为大家分析 ...

  4. 一种快速准确的人脸检测、识别和验证系统

    即将迎来了2019世界人工智能大会,相信这个会议又一次推动人工智能的发展,有兴趣的同学可以去参加感受一下人工智能的热度,绝不会低于这个夏天的高温. 今天"计算机视觉战队"为大家分析 ...

  5. mtcnn人脸检测python_基于mtcnn和facenet的实时人脸检测与识别系统开发

    简介:本文主要介绍了实时人脸检测与识别系统的详细方法.该系统基于python/opencv2/tensorflow环境,实现了从摄像头读取视频,检测人脸,识别人脸的功能.本系统代码地址:real ti ...

  6. python识别人脸多种属性_人脸检测及识别python实现系列(4)——卷积神经网络(CNN)入门...

    人脸检测及识别python实现系列(4)--卷积神经网络(CNN)入门 上篇博文我们准备好了2000张训练数据,接下来的几节我们将详细讲述如何利用这些数据训练我们的识别模型.前面说过,原博文给出的训练 ...

  7. 测一测!中科视拓免费开放口罩人脸检测与识别技术

    全民抗疫形势下,口罩已成为复工复产的标配.对于人脸识别技术厂商而言,两个应用需求应运而生: 1.检测人脸是否佩戴口罩: 2.在戴口罩的情况下依旧能够实现高精度人脸识别. 疫情初期,中科视拓紧急研发口罩 ...

  8. (转)如何应用MTCNN和FaceNet模型实现人脸检测及识别

    https://zhuanlan.zhihu.com/p/37705980 人脸检测与人脸识别 人脸检测是对人脸进行识别和处理的第一步,主要用于检测并定位图片中的人脸,返回高精度的人脸框坐标及人脸特征 ...

  9. CNCC 2016 | 山世光:深度化的人脸检测与识别技术—进展与展望

    雷锋网(公众号:雷锋网)按:本文根据山世光在 CNCC 2016 可视媒体计算论坛上所做的报告<深度化的人脸检测与识别技术:进展与问题>编辑整理而来,在未改变原意的基础上略有删减. 山世光 ...

最新文章

  1. oracle中创建触发器
  2. mmsPlayer 2.0 将开源java部分
  3. 【阿里内部应用】基于Blink为新商业调控打造实时大数据交互查询服务
  4. pytest的fixture传参数
  5. python的pyaudio教程入门_『开发技巧』Python音频操作工具PyAudio上手教程
  6. QCon思考之通过Quora和Spotify案例,直击数据处理背后的魅影
  7. 东北大学文科能学计算机专业吗,东北大学有哪些好专业,文科理科专业分别有哪些...
  8. netbsd apache php mysql,NetBSD配置aria2的web前端YAAW笔记
  9. mset redis_redis mset key命令简介
  10. CR渲染器全景图如何渲染颜色通道_一键九图!这SU插件的“出图”速度比渲染器还快?...
  11. 期望值最大化算法 EM_GMM 估计高斯混合模型
  12. 使用PLSQL演示TM锁互斥现象
  13. flex TLF 文本流编辑器
  14. 小白学JAVA之十——枚举
  15. html相册滑动手风琴效果实现,JS实现图片手风琴效果
  16. 租的房子里有无线路由器有ip和dns服务器无密码可以联网吗,没网怎么设置路由器?...
  17. spring boot网上购物系统毕业设计源码311236
  18. 全国医师资格考试计算机化模拟考试系统考生操作流程
  19. 手机qq2012(android)1.0,手机qq2012安卓1.0 几个版本改进后的正式版本
  20. 完美低代码开发工具组合:钉钉宜搭+接口大师YesAPI

热门文章

  1. 用计算机模拟地球诞生,计算机模拟显示:地球生命或源自太空外星微生物
  2. Docker之私有仓库harbor (二)
  3. 8421BCD码加法的修正证明
  4. 新整理常见互联网公司职级和薪资一览!
  5. 历经艰难,终成大器!改变,永远不迟!
  6. 贾跃亭妻子甘薇被列入老赖名单;360两高管离职;中国联通正式关闭2G丨价值早报...
  7. 赛扬n5095和r55500u哪个好
  8. 电子政务网络智慧运维方案
  9. 打怪升级之小白的大数据之旅(六十一)<Hive旅程第二站:Hive安装>
  10. 【转载】 Android MediaCodec stuff