• 售前

  • 售后

热门帖子
入门百科

Python三十行代码实现简单人脸辨认的示例代码

[复制链接]
123457264 显示全部楼层 发表于 2021-10-26 13:43:53 |阅读模式 打印 上一主题 下一主题
一、库介绍


opencv,face_recognition,numpy,以及dlib

注意:
安装opencv速率大概过慢,需要更换国内镜像源,参考:https://www.jb51.net/article/208359.htm
附带Python3.7,64位版本 dlib whl下载路径:dlib-19_jb51.rar

二、库安装

  1. pip install opencv-python
  2. pip install face_recognition
  3. pip install numpy
复制代码
dlib库需进入whl文件路径下安装
  1. pip install dlib-19.17.99-cp37-cp37m-win_amd64.whl
复制代码
三、face_recognition库简单介绍


face_recognition的load_image_file方法会加载图片,并返回一个ndarray类型的数据
  1. face_path = "C://Users//25103//Desktop//Python人脸识别//face//徐先生.jpg"
  2. image = face_recognition.load_image_file(face_path)
复制代码
face_recognition的face_encoding方法,可从返回的ndarray类型数据中提取人脸特性,可同时提取多个特性,返回值为列表类型
  1. face_encoding = face_recognition.face_encodings(image)[0]
复制代码
face_recognition的face_location方法可以获取图片中全部人脸的位置,其返回值为一个列表
  1. face_locations = face_recognition.face_locations(rgb_frame)
复制代码
四、代码实现以及解释解说

  1. # coding = utf-8import dlibimport cv2import face_recognitionimport os# 创建视频对象video_capture = cv2.VideoCapture(0)# 加载需要辨认的人脸图片(这张图片需要仅有一张脸)# face_recognition的load_image_file方法会加载图片,并返回一个ndarray类型的数据# ndarray类型就是NumPy的数组类型,此中的元素类型可以同等也可以差别等face_path = "C://Users//25103//Desktop//Python人脸识别//face//徐先生.jpg"
  2. image = face_recognition.load_image_file(face_path)# face_recognition的face_encoding方法,可从返回的ndarray类型数据中提取人脸特性,可同时提取多个特性,返回值为列表类型# 因为照片中只有一个人脸,以是我们取列表的第一个值face_encoding = face_recognition.face_encodings(image)[0]while True: # 从视频对象中读取一帧照片 ret,frame = video_capture.read() # 将照片缩小,加速处置惩罚速率,这里将其缩小为原图的1/4 # frame = cv2.rectangle(frame,(0,0),fx=0.25,fy=0.25) # 因为cv2用的是BGR色彩,我们组要将其转化为RGB进行处置惩罚 rgb_frame = frame[:,:,::-1] # 列表转置使用 # face_recognition的face_location方法可以获取图片中全部人脸的位置,其返回值为一个列表 face_locations = face_recognition.face_locations(rgb_frame) print("共从视频中找到了{}张人脸".format(len(face_locations))) # 获取视频中全部人脸的特性 face_encodings = face_recognition.face_encodings(rgb_frame,face_locations) for face in face_encodings: # 比力两个特性值——encoding1与encoding2,匹配返回True,否则返回False。tolerance越低,顾名思义,容错率越低,返回值为列表类型 match = face_recognition.compare_faces([face_encoding],face,tolerance=0.4) name = "不认识的人" if match[0]:  # face为图片名称  name = os.path.basename(face_path[0:-4]) print("找到了{}".format(name))
复制代码
到此这篇关于Python三十行代码实现简单人脸辨认的示例代码的文章就介绍到这了,更多相干Python 简单人脸辨认内容请搜索草根技术分享以前的文章或继续浏览下面的相干文章盼望大家以后多多支持草根技术分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作