导语

今天给大家介绍一个非常简洁的人脸识别系统:

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。而通过我们Python编程,几行代码就可以实现人脸识别,这主要得益于face_recognition库。

想领取完整源码跟Python学习资料私信我或点击这行字体即可

一、安装过程

face_recognition 库主要封装了dlib这一 C++ 图形库,通过 Python 语言将它封装为一个非常简单就可以实现人脸识别的 API 库,屏蔽了人脸识别的算法细节,大大降低了人脸识别功能的开发难度。

小编是基于Windows环境下的Python3.6.4进行安装,在查阅相当多贴文后发现这样的成功率更高哦!

这篇文章详细介绍了face_recognition库的安装,感兴趣的同学们可以跟着这篇文章安装face_recognition库哦!过程需要一点耐心,大家加油!https://blog.csdn.net/advancezhang/article/details/100018893

这里有截图哦!

二、基本代码

1、识别人脸并将其框出

# 检测人脸import face_recognitionimport cv2# 读取图片并识别人脸img = face_recognition.load_image_file("1.png.png")face_locations = face_recognition.face_locations(img)print (face_locations)# 调用opencv函数显示图片img = cv2.imread("1.png.png")cv2.namedWindow("原图")cv2.imshow("原图", img)# 遍历每个人脸,并标注faceNum = len(face_locations)for i in range(0, faceNum):top =  face_locations[i][0]right =  face_locations[i][1]bottom = face_locations[i][2]left = face_locations[i][3]start = (left, top)end = (right, bottom)color = (55,255,155)thickness = 3cv2.rectangle(img, start, end, color, thickness)# 显示识别结果cv2.namedWindow("识别")cv2.imshow("识别", img)cv2.waitKey(0)cv2.destroyAllWindows()

运行代码1

运行结果1

这样就可以将图片中的人脸识别出来啦!不过需要注意的是,要将需要进行识别的图片保存在该代码的文件夹下,在输入图片名称时,需要将图片后缀一同输入;

如本案例的图片名为”1.png”,图片属性为png格式,所以在输入图片名称时需要输入“1.png.png”。

本代码不仅可以识别单人人脸,还可以同时识别多人人脸,自己动手尝试一下吧!

2、识别未知的人脸

小编这里放入了

”yaoming”,”yaoming1”,

”liuxiang”,”zhangguowei”

等jpg格式的文件,

一起来看看人脸识别准不准确吧!

# -*- coding: utf-8 -*-# 识别人脸鉴定是哪个人# 导入face_recogntion模块import face_recognition#将jpg文件加载到numpy数组中chen_image = face_recognition.load_image_file("yaoming.jpeg")#要识别的图片unknown_image = face_recognition.load_image_file("liuxiang.jpg")#获取每个图像文件中每个面部的面部编码#由于每个图像中可能有多个面,所以返回一个编码列表。#但是由于我知道每个图像只有一个脸,我只关心每个图像中的第一个编码,所以我取索引0。chen_face_encoding = face_recognition.face_encodings(chen_image)[0]print("chen_face_encoding:{}".format(chen_face_encoding))unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]print("unknown_face_encoding :{}".format(unknown_face_encoding))known_faces = [chen_face_encoding]#结果是True/false的数组,未知面孔known_faces阵列中的任何人相匹配的结果results = face_recognition.compare_faces(known_faces, unknown_face_encoding)print("result :{}".format(results))print("这个未知面孔是 姚明 吗? {}".format(results[0]))print("这个未知面孔是 我们从未见过的新面孔吗? {}".format(not True in results)) 

运行代码2

运行结果2

该代码通过分析人脸的面部特征,

将面部特征转化为参数进行比较,

结果也是相当精确。

3、识别视频中的人脸

face_recognition库的强大不只是图片的人脸识别,还可以在视频中准确地识别出视频中的人脸与是否与事先设定好的人脸匹配。

# -*- coding: utf-8 -*-# 摄像头头像识别import face_recognitionimport cv2video_capture = cv2.VideoCapture(0)# 本地图像chenduling_image = face_recognition.load_image_file("yaoming.jpeg")chenduling_face_encoding = face_recognition.face_encodings(chenduling_image)[0]# 本地图像二sunyizheng_image = face_recognition.load_image_file("liuxiang.jpg")sunyizheng_face_encoding = face_recognition.face_encodings(sunyizheng_image)[0]# 本地图片三zhangzetian_image = face_recognition.load_image_file("zhangguowei.jpg")zhangzetian_face_encoding = face_recognition.face_encodings(zhangzetian_image)[0]# Create arrays of known face encodings and their names# 脸部特征数据的集合known_face_encodings = [chenduling_face_encoding,sunyizheng_face_encoding,zhangzetian_face_encoding]# 人物名称的集合known_face_names = ["yaoming","liuxiang","zhangguowei"]face_locations = []face_encodings = []face_names = []process_this_frame = Truewhile True:# 读取摄像头画面ret, frame = video_capture.read()# 改变摄像头图像的大小,图像小,所做的计算就少small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)# opencv的图像是BGR格式的,而我们需要是的RGB格式的,因此需要进行一个转换。rgb_small_frame = small_frame[:, :, ::-1]# Only process every other frame of video to save timeif process_this_frame:# 根据encoding来判断是不是同一个人,是就输出true,不是为flaseface_locations = face_recognition.face_locations(rgb_small_frame)face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)face_names = []for face_encoding in face_encodings:# 默认为unknownmatches = face_recognition.compare_faces(known_face_encodings, face_encoding)name = "Unknown"# if match[0]:#     name = "michong"# If a match was found in known_face_encodings, just use the first one.if True in matches:first_match_index = matches.index(True)name = known_face_names[first_match_index]face_names.append(name)process_this_frame = not process_this_frame# 将捕捉到的人脸显示出来for (top, right, bottom, left), name in zip(face_locations, face_names):# Scale back up face locations since the frame we detected in was scaled to 1/4 sizetop *= 4right *= 4bottom *= 4left *= 4# 矩形框cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)#加上标签cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)font = cv2.FONT_HERSHEY_DUPLEXcv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)# Displaycv2.imshow('monitor', frame)# 按Q退出if cv2.waitKey(1) & 0xFF == ord('q'):breakvideo_capture.release()cv2.destroyAllWindows()

运行代码3

运行结果3

在运行过程中电脑的摄像头会自动打开识别摄像头里的人脸是不是预先设定的人脸。

end

这期分享就到这里了~看完是不是觉得人脸识别很容易实现呢?有想法的铁汁们赶紧动手试试看吧喜欢记得给小编三连哦!家人们的支持是小编更新最大的动力

用Python做一个人脸识别系统,简单操作又实用~相关推荐

  1. OpenCV4.5.4 DNN人脸识别模块使用介绍--如何快速搭建一个人脸识别系统

    点击下方卡片,关注"OpenCV与AI深度学习" 视觉/图像重磅干货,第一时间送达 导读 本文主要介绍OpenCV4.5.4中人脸识别模块的使用和简易人脸识别系统的搭建,供大家参考 ...

  2. 千万别让老板知道 | Python做个人脸识别考勤系统

    人脸识别考勤系统 实现思路如下: 下面讲解下核心代码 1. 读摄像头 2. 裁剪人脸 3. 识别面部68个关键点 4. 人脸向量化 5. 人脸对比 哈喽大家好,我是王某人. 现在好多公司都用人脸识别实 ...

  3. python怎么另起一行阅读答案_使用Python+Dlib构建人脸识别系统(在Nvidia Jetson Nano 2GB开发板上)...

    Nvidia Jetson Nano 2GB开发板是一款新的单板机 售价59美元 运行带有GPU加速的人工智能软件.在2020年 你可以从一台售价59美元的单板计算机中获得令人惊叹的性能 让我们用它来 ...

  4. 使用Python+Dlib构建人脸识别系统(在Nvidia Jetson Nano 2GB开发板上)

    Nvidia Jetson Nano 2GB开发板是一款新的单板机,售价59美元,运行带有GPU加速的人工智能软件. 在2020年,你可以从一台售价59美元的单板计算机中获得令人惊叹的性能,让我们用它 ...

  5. Python | 人脸识别系统 — 用户操作

    本博客为人脸识别系统的摄像头画面展示代码解释 人脸识别系统博客汇总:人脸识别系统-博客索引 项目GitHub地址:Su-Face-Recognition: A face recognition for ...

  6. 用python做一个车牌识别_如何用 Python 识别车牌

    车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(ETC)系统和交通违章车辆的检测,除此之外像小区或地下车库门禁也会用到,基本上凡是需要对车辆进行身份检测的地方都会用到. 简介 车牌识别系统 ...

  7. 做一个人脸识别相关的毕业设计

    本文旨在简单聊一下做一个与人脸识别相关的本科毕业设计,希望不是挖坑文. 背景:普通本科毕业设计大多是构建网站(购物.管理系统.论坛),相对来说老师看的也审美疲劳,当然如果买毕设的话价格会相对便宜. 本 ...

  8. 做一个人脸识别登录功能

    前天晚上散步到一个大学公寓门口,发现公寓的大门口都安装了人脸识别的门禁,就有种强烈的欲望 想要学习一下 哈哈,刚好也在做项目就想运用到这个技术-于是便有了开端. 视觉智能--人脸识别 基于阿里云的视觉 ...

  9. 用python做一个舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

最新文章

  1. python读中文文本_python读取中文txt文本
  2. CKEditor+CKFinder配置学习
  3. 部署WSUS2.0+SP1
  4. Spring IOC 注入方式
  5. 分段路由SR应用场景—Vecloud
  6. MATLAB 添加自定义的模块到simulink库浏览器
  7. 如何调整金格电子章服务器印章_重磅!公安部再度认可电子签名、电子印章法律效力!...
  8. Linux命令行性能监控工具大全
  9. 面试官:怎么解决MySQL中的死锁问题?
  10. Springboot 整合 Dubbo/ZooKeeper你不知道的那点事,大神必修课
  11. OPPO 物联网开放之路
  12. 我,三十岁,还在做技术,被中年危机倒逼的程序员该何去何从?
  13. U盘无法格式化--量产工具成功救活
  14. 软考计算机中级网络工程师,计算机软考中级哪个最有用
  15. 怎样清理计算机c盘东西,电脑c盘满了怎么清理
  16. apple pencil_如何检查Apple Pencil的电池电量
  17. Linux磁盘列阵(RAID),包括RAID详解、Linux磁盘列阵和mdadm命令的相关操作
  18. C# Excel 操作
  19. IPv6地址自动配置
  20. java获取浏览器url_java 打开浏览器 url

热门文章

  1. 智伴机器人三级分销模式_微信三级分销模式的可行性?
  2. Emlog资源网下载主题模板源码
  3. 实现透明效果时,开启深度测试,关闭深度写入
  4. 安卓逆向010之实战破解内购(斗地主)
  5. wordpress中文主题,开源wordpress中文免费主题模板
  6. 首次提交代码至github(转载)
  7. 【腾讯BUG】QQ群贴超大表情BUG,恶意炸群BUG
  8. 电脑主板进bios的启动快捷键汇总
  9. 根本原因分析(RCA)
  10. CIO:人工智能将改变企业IT