Python 几行代码即可实现人脸识别

摘要:一行代码实现人脸识别

  • 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片。其中每个人一张图片,图片以人的名字命名。
  • 接下来,你需要准备另一个文件夹,里面是你要识别的图片。
  • 然后你就可以运行face_recognition命令了,把刚刚准备的两个文件夹作为参数传入,命令就会返回需要识别的图片中都出现了谁,一行代码足以!!!

正文:

环境要求:

  • Ubuntu17.10
  • Python 2.7.14

环境搭建:

1.安装 Ubuntu17.10 > 安装步骤在这里

2.安装 Python2.7.14 (Ubuntu17.10 默认Python版本为2.7.14)

3.安装 git 、cmake 、 python-pip

#安装 git
$ sudo apt-get install -y git
# 安装 cmake
$ sudo apt-get install -y cmake
# 安装 python-pip
$ sudo apt-get install -y python-pip

4.安装编译dlib

安装face_recognition这个之前需要先安装编译dlib

# 编译dlib前先安装 boost
$ sudo apt-get install libboost-all-dev

# 开始编译dlib
# 克隆dlib源代码
$ git clone https://github.com/davisking/dlib.git
$ cd dlib
$ mkdir build
$ cd build
$ cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1
$ cmake --build .(注意中间有个空格)
$ cd ..
$ python setup.py install --yes USE_AVX_INSTRUCTIONS --no   DLIB_USE_CUDA

5.安装 face_recognition

# 安装 face_recognition
$ pip install face_recognition
# 安装face_recognition过程中会自动安装 numpy、scipy 等

环境搭建完成后,在终端输入 face_recognition 命令查看是否成功

实现人脸识别:

示例一(1行代码实现人脸识别)

1.首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片。其中每个人一张图片,图片以人的名字命名:

known_people文件夹下有babe、成龙、容祖儿的照片

2.接下来,你需要准备另一个文件夹,里面是你要识别的图片: unknown_pic文件夹下是要识别的图片,其中韩红是机器不认识的

3.然后你就可以运行face_recognition命令了,把刚刚准备的两个文件夹作为参数传入,命令就会返回需要识别的图片中都出现了谁:

识别成功!!!

示例二(识别图片中的所有人脸并显示出来)

 # filename : find_faces_in_picture.py
 # -*- coding: utf-8 -*-
 # 导入pil模块 ,可用命令安装 apt-get install python-Imaging
 from PIL import Image
 # 导入face_recogntion模块,可用命令安装 pip install face_recognition
 import face_recognition

 # 将jpg文件加载到numpy 数组中
image = face_recognition.load_image_file("/opt/face/unknown_pic/all_star.jpg")

 # 使用默认的给予HOG模型查找图像中所有人脸
 # 这个方法已经相当准确了,但还是不如CNN模型那么准确,因为没有使用GPU加速
 # 另请参见: find_faces_in_picture_cnn.py
face_locations = face_recognition.face_locations(image)

 # 使用CNN模型
 # face_locations = face_recognition.face_locations(image, number_of_times_to_upsample=0, model="cnn")

 # 打印:我从图片中找到了 多少 张人脸
print("I found {} face(s) in this photograph.".format(len(face_locations)))

 # 循环找到的所有人脸
 for face_location in face_locations:

        # 打印每张脸的位置信息
        top, right, bottom, left = face_location
        print("A face is located at pixel location Top: {}, Left: {}, Bottom: {}, Right: {}".format(top, left, bottom, right))

        # 指定人脸的位置信息,然后显示人脸图片
        face_image = image[top:bottom, left:right]
        pil_image = Image.fromarray(face_image)
        pil_image.show()

如下图为用于识别的图片

 # 执行python文件
$ python find_faces_in_picture.py

从图片中识别出7张人脸,并显示出来,如下图

示例三(自动识别人脸特征)

 # filename : find_facial_features_in_picture.py
 # -*- coding: utf-8 -*-
 # 导入pil模块 ,可用命令安装 apt-get install python-Imaging
from PIL import Image, ImageDraw
 # 导入face_recogntion模块,可用命令安装 pip install face_recognition
import face_recognition

 # 将jpg文件加载到numpy 数组中
image = face_recognition.load_image_file("biden.jpg")

#查找图像中所有面部的所有面部特征
face_landmarks_list = face_recognition.face_landmarks(image)

print("I found {} face(s) in this photograph.".format(len(face_landmarks_list)))

for face_landmarks in face_landmarks_list:

   #打印此图像中每个面部特征的位置
    facial_features = [
        'chin',
        'left_eyebrow',
        'right_eyebrow',
        'nose_bridge',
        'nose_tip',
        'left_eye',
        'right_eye',
        'top_lip',
        'bottom_lip'
    ]

    for facial_feature in facial_features:
        print("The {} in this face has the following points: {}".format(facial_feature, face_landmarks[facial_feature]))

   #让我们在图像中描绘出每个人脸特征!
    pil_image = Image.fromarray(image)
    d = ImageDraw.Draw(pil_image)

    for facial_feature in facial_features:
        d.line(face_landmarks[facial_feature], width=5)

    pil_image.show()

自动识别出人脸特征(轮廓)

示例四(识别人脸鉴定是哪个人)

 # filename : recognize_faces_in_pictures.py
 # -*- conding: utf-8 -*-
 # 导入face_recogntion模块,可用命令安装 pip install face_recognition
import face_recognition

 #将jpg文件加载到numpy数组中
babe_image = face_recognition.load_image_file("/opt/face/known_people/babe.jpeg")
Rong_zhu_er_image = face_recognition.load_image_file("/opt/face/known_people/Rong zhu er.jpg")
unknown_image = face_recognition.load_image_file("/opt/face/unknown_pic/babe2.jpg")

 #获取每个图像文件中每个面部的面部编码
 #由于每个图像中可能有多个面,所以返回一个编码列表。
 #但是由于我知道每个图像只有一个脸,我只关心每个图像中的第一个编码,所以我取索引0。
babe_face_encoding = face_recognition.face_encodings(babe_image)[0]
Rong_zhu_er_face_encoding = face_recognition.face_encodings(Rong_zhu_er_image)[0]
unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]

known_faces = [
    babe_face_encoding,
    Rong_zhu_er_face_encoding
]

 #结果是True/false的数组,未知面孔known_faces阵列中的任何人相匹配的结果
results = face_recognition.compare_faces(known_faces, unknown_face_encoding)

print("这个未知面孔是 Babe 吗? {}".format(results[0]))
print("这个未知面孔是 容祖儿 吗? {}".format(results[1]))
print("这个未知面孔是 我们从未见过的新面孔吗? {}".format(not True in results))

显示结果下如图

示例五(识别人脸特征并美颜)

 # filename : digital_makeup.py
 # -*- coding: utf-8 -*-
 # 导入pil模块 ,可用命令安装 apt-get install python-Imaging
from PIL import Image, ImageDraw
 # 导入face_recogntion模块,可用命令安装 pip install face_recognition
import face_recognition

#将jpg文件加载到numpy数组中
image = face_recognition.load_image_file("biden.jpg")

#查找图像中所有面部的所有面部特征
face_landmarks_list = face_recognition.face_landmarks(image)

for face_landmarks in face_landmarks_list:
    pil_image = Image.fromarray(image)
    d = ImageDraw.Draw(pil_image, 'RGBA')

    #让眉毛变成了一场噩梦
    d.polygon(face_landmarks['left_eyebrow'], fill=(68, 54, 39, 128))
    d.polygon(face_landmarks['right_eyebrow'], fill=(68, 54, 39, 128))
    d.line(face_landmarks['left_eyebrow'], fill=(68, 54, 39, 150), width=5)
    d.line(face_landmarks['right_eyebrow'], fill=(68, 54, 39, 150), width=5)

    #光泽的嘴唇
    d.polygon(face_landmarks['top_lip'], fill=(150, 0, 0, 128))
    d.polygon(face_landmarks['bottom_lip'], fill=(150, 0, 0, 128))
    d.line(face_landmarks['top_lip'], fill=(150, 0, 0, 64), width=8)
    d.line(face_landmarks['bottom_lip'], fill=(150, 0, 0, 64), width=8)

    #闪耀眼睛
    d.polygon(face_landmarks['left_eye'], fill=(255, 255, 255, 30))
    d.polygon(face_landmarks['right_eye'], fill=(255, 255, 255, 30))

    #涂一些眼线
    d.line(face_landmarks['left_eye'] + [face_landmarks['left_eye'][0]], fill=(0, 0, 0, 110), width=6)
    d.line(face_landmarks['right_eye'] + [face_landmarks['right_eye'][0]], fill=(0, 0, 0, 110), width=6)

    pil_image.show()

美颜前后对比如下图:

结尾:

以上就是本文的全部内容了,大家喜欢的记得点点赞!

到此这篇关于Python 几行代码即可实现人脸识别 的文章就介绍到这了,更多相关Python 人脸识别内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python摸鱼神器之利用树莓派opencv人脸识别自动控制电脑显示桌面

    前言 老早就看到新闻员工通过人脸识别监控老板来摸鱼. 有时候摸鱼太入迷了,经常在上班时间玩其他的东西被老板看到.自从在咸鱼上淘了一个树莓派3b,尝试做了一下内网穿透,搭建网站就吃灰了,接下来突发奇想就买了一个摄像头和延长线 接下来就是敲代码了 环境 树莓派3+ python3.7 win7 python3.6 过程 首先树莓派和电脑要在一个内网下面,就是一个路由器下面吧.要在树莓派设置里面开启摄像头,然后安装cv2,cv2有很多依赖库需要手动安装,很是费脑筋.原理介绍一下,人脸识别主要是依赖op

  • 基于Python实现人脸识别和焦点人物检测功能

    写在前面的话 基于dlib库的模型,实现人脸识别和焦点人物的检测.最后呈现的效果为焦点人物的识别框颜色与其他人物框不一样. 准备工作 需要安装好python环境,安装好dlib.opencv-python库等,具体可以看报错信息(可以使用PyCharm来运行和编辑py文件),然后把需要的库补全,文章最后会有完整代码,但是需要与shape_predictor_68_face_landmarks.dat模型文件同处一个路径下,然后启用.(百度可以下载到) 设计过程 因为是在自己电脑完成的必做题设计,

  • Python基于pyopencv人脸识别并绘制GUI界面

    目录 项目介绍 采集人脸: 识别功能: 项目思路 项目模块 1.人脸采集 2.数据训练 3.人脸识别 4.GUI界面 项目代码 人脸采集 数据训练 人脸识别 合并GUI 项目总结 项目介绍 我们先来看看成果: 首先写了一个能够操作的GUI界面. 其中两个按钮对应相应的功能: 采集人脸: 识别功能: 我可是牺牲了色相五五五五...(电脑像素不是很好大家将就一下嘿嘿嘿) 项目思路 本项目是借助于python的一个cv2图像识别库,通过调取电脑的摄像头进行识别人脸并保存人脸图片的功能,然后在通过cv2

  • 基于Python搭建人脸识别考勤系统

    目录 介绍 人脸识别的实际应用 构建人脸识别系统的步骤 安装库 导入库 加载图像 查找人脸位置并绘制边界框 为人脸识别训练图像 构建人脸识别系统 人脸识别系统面临的挑战 结论 介绍 在本文中,你将学习如何使用 Python 构建人脸识别系统.人脸识别比人脸检测更进一步.在人脸检测中,我们只检测人脸在图像中的位置,但在人脸识别中,我们制作了一个可以识别人的系统. "人脸识别是验证或识别图片或视频中的人的挑战.大型科技巨头仍在努力打造更快.更准确的人脸识别模型." 人脸识别的实际应用 人脸

  • 使用Python实现简单的人脸识别功能(附源码)

    目录 前言 一.首先 二.接下来 1.对照人脸获取 2. 通过算法建立对照模型 3.识别 前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确性比较高的一种. 一.首先 梳理一下实现人脸识别需要进行的步骤: 流程大致如此,在此之前,要先让人脸被准确的找出来,也就是能准确区分人脸的分类器,在这里我们可以用已经训练好的分类器,网上种类较全,分类准确度也比

  • Python人脸识别之微笑检测

    目录 一.实验准备 二.图片预处理 三.划分数据集 四.CNN提取人脸识别笑脸和非笑脸 1.创建模型 2.归一化处理 3.数据增强 4.创建网络 5.单张图片测试 6.摄像头实时测试 五.Dlib提取人脸特征识别笑脸和非笑脸 一.实验准备 环境搭建 pip install tensorflow==1.2.0 pip install keras==2.0.6 pip install dlib==19.6.1 pip install h5py==2.10 如果是新建虚拟环境,还需安装以下包 pip

  • Python实现人脸识别

    使用到的库: dlib+Opencv python版本: 3.8 编译环境: Jupyter Notebook (Anaconda3) 0.Dlib人脸特征检测原理 提取特征点:首选抓取多张图片,从中获取特征数据集和平均特征值然后写入 csv 文件 - 计算特征数据集的欧式距离作对比:首先使用Opencv库将摄像头中的人脸框出来,再将摄像头中采取到的人脸特征值与数据集中的每个人的特征均值作对比,选取最接近(欧氏距离最小)的值,将其标注为欧氏距离最小的数据集的人名 一.构建人脸特征数据集 安装Dl

  • 教你如何用Python实现人脸识别(含源代码)

    工具与图书馆 Python-3.x CV2-4.5.2 矮胖-1.20.3 人脸识别-1.3.0 若要安装上述软件包,请使用以下命令. pip install numpy opencv-python 要安装FaceRecognition,首先安装dlib包. pip install dlib 现在,使用以下命令安装面部识别模块 pip install face_recognition 下载人脸识别Python代码 请下载python面部识别项目的源代码: 人脸识别工程代码 项目数据集 我们可以使

  • 基于Python实现简单的人脸识别系统

    目录 前言 基本原理 代码实现 创建虚拟环境 安装必要的库 前言 最近又多了不少朋友关注,先在这里谢谢大家.关注我的朋友大多数都是大学生,而且我简单看了一下,低年级的大学生居多,大多数都是为了完成课程设计,作为一个过来人,还是希望大家平时能多抽出点时间学习一下,这种临时抱佛脚的策略要少用嗷.今天我们来python实现一个人脸识别系统,主要是借助了dlib这个库,相当于我们直接调用现成的库来进行人脸识别,就省去了之前教程中的数据收集和模型训练的步骤了. B站视频:用300行代码实现人脸识别系统_哔

  • Python 几行代码即可实现人脸识别

    摘要:一行代码实现人脸识别 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片.其中每个人一张图片,图片以人的名字命名. 接下来,你需要准备另一个文件夹,里面是你要识别的图片. 然后你就可以运行face_recognition命令了,把刚刚准备的两个文件夹作为参数传入,命令就会返回需要识别的图片中都出现了谁,一行代码足以!!! 正文: 环境要求: Ubuntu17.10 Python 2.7.14 环境搭建: 1.安装 Ubuntu17.10 > 安装步骤在这里 2.安装 Python

  • Python三十行代码实现简单人脸识别的示例代码

    一.库介绍 opencv,face_recognition,numpy,以及dlib 注意: 安装opencv速度可能过慢,需要更换国内镜像源,参考:https://www.jb51.net/article/208359.htm 附带Python3.7,64位版本 dlib whl下载路径:dlib-19_jb51.rar 二.库安装 pip install opencv-python pip install face_recognition pip install numpy dlib库需进入

  • Python 25行代码实现的RSA算法详解

    本文实例讲述了Python 25行代码实现的RSA算法.分享给大家供大家参考,具体如下: 网络上很多关于RSA算法的原理介绍,但是翻来翻去就是没有一个靠谱的算法实现,即使有代码介绍,也都是直接调用JDK或者Python代码包中的API实现,或者即使有代码也都写得特别烂.无形中让人感觉RSA加密算法竟然这么高深,然后就看不下去了.还有我发现对于"大整数的幂次乘方取模"竟然采用直接计算的幂次的值,再取模,类似于(2 ^ 1024) ^ (2 ^ 1024),这样的计算就直接去计算了,我不知

  • python 30行代码实现蚂蚁森林自动偷能量

    @[toc] 虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前通过用代码模拟手机点按的方式,实现了朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋友圈点赞复杂很多,所以当时就没有实现自动偷能量.不过我那篇博客评论下面有网友推荐了appium和uiautomator2这俩工具,最近抽空研究了下,发现用uiautomator2的话这事简单了好多,而且由于蚂蚁森林改版,连续偷能量的操作流程也简单了好多,于是乎我就实现了自动偷能量,效果如

  • 使用PHP下载CSS文件中的所有图片【几行代码即可实现】

    我们在扒皮(你们懂的)经常会遇到,虽然有扒皮软件吧~但跑在windows下~ 这儿来个PHP的~~~只要几行代码即可实现 <?php set_time_limit(0); //取得样式文件内容 $styleFileContent = file_get_contents('images/style.css'); //匹配出需要下载的URL地址 preg_match_all("/url\((.*)\)/", $styleFileContent, $imagesURLArray); /

  • Python基于OpenCV库Adaboost实现人脸识别功能详解

    本文实例讲述了Python基于OpenCV库Adaboost实现人脸识别功能.分享给大家供大家参考,具体如下: 以前用Matlab写神经网络的面部眼镜识别算法,研究算法逻辑,采集大量训练数据,迭代,计算各感知器的系数...相当之麻烦~而现在运用调用pythonOpenCV库Adaboost算法,无需知道算法逻辑,无需进行模型训练,人脸识别变得相当之简单了. 需要用到的库是opencv(open source computer vision),下载安装方式如下: 使用pip install num

  • python百行代码自制电脑端网速悬浮窗的实现

    前言 看到某60的网速悬浮球有点心动,但是又不想装这个流氓软件,就自己用python加PyQt5自制了一个,实测还行,关键不占用电脑一点资源,已将软件打包,可自行下载使用. 预览 观看直播时实时网速. 文件结构 运行管理 开始运行时内存消耗18.3m,cpu,磁盘,网络不占用. 运行一天后内存稳定于6.4m,cpu,磁盘,网络不占用. 整体思路 使用psuti.net_io_counters 监控电脑网卡IO 将流量数据格式化,统计每次数据总和保存在本地<流量使用情况.txt>(这个是个缺陷,

  • python 6行代码制作月历生成器

    原文作者:Alex27933 转自链接:https://learnku.com/articles/49570 1. 订立制作目标 目标: 输入指定的年份和月份,便能生成月历 可以重复运行 2. 制作所需函数 输入指定的年份和月份 → input 函数 生成月历 → calendar 函数 可以重复运行 → while 3. 开始制作 第一步:载入模块 由于 calendar 函数是系统自带,无需 pip 安装,可以直接载入使用. import calendar 第二步:制作输入年份和月份的部分

  • python百行代码实现汉服圈图片爬取

    目录 分析网站 子链接获取 获取标题和图片地址 保存图片 主函数 平时旅游的时候,在旅游景区我们经常可以看到穿各种服饰去拍照的游客,也不会刻意多关注.前两天浏览网页无意看到一个网站,看到穿汉服的女孩是真的很好看.无论是工作需要还是创作文案,把这么漂亮的图片来当作素材都是一个很好的idea.有需要,我们就爬它,爬它,爬它! 话不多说,我们下面详细介绍图片爬取. 分析网站 网址如下: https://www.aihanfu.com/zixun/tushang-1/ 这是第一页的网址,根据观察,第二页

  • Python 3行代码提取音乐高潮部分

    目录 1.原理简介 2.代码编写 2.1 安装所需要的项目 2.2 编写代码 3.效果检验 4.批量提取 前言: 有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来看看,怎么样来提取孤芳自赏提取高潮后的部分: 1.原理简介 不知道大家有没有这样的体会,大部分时候,歌曲的高潮部分通常是重复次数最多的部分.因此我们可以根据这一个特征,提出我们的算法: 1.遍历整首歌曲. 2.将选定长度的部分与其他部分比较并计算相似

随机推荐