face_recognition 基础接口

face_recognition 基础接口



face_recognition使用世界上最简单的人脸识别库,在Python或命令行中识别和操作人脸。

使用dlib最先进的人脸识别技术构建而成,并具有深度学习功能。 该模型在 Labeled Faces in the Wild 基准中的准确率为99.38%。

face_recognition 官方文档 :https://pypi.org/project/face_recognition/

  


查找图片中的面孔

  

# 导入face_recognition模块
import face_recognition

# 查找图片中的面孔
# 将jpg文件添加到numpy数组中
image = face_recognition.load_image_file("1.jpg")
# 查找图片中人脸(上下左右)的位置,图像中可能有多个人脸
# face_locations可能的值类似为 [(135,536,198,474),()]
face_locations = face_recognition.face_locations(image)

print(face_locations)

  

查找和操作图片中的面部特征

  

# 导入face_recognition模块
import face_recognition

# 查找图片中人脸的所有面部特征(眉毛,眼睛,鼻子,上下嘴唇,面部轮廓)
# 将jpg文件添加到numpy数组中
image = face_recognition.load_image_file("1.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)

print(face_landmarks_list)
/usr/bin/python3.6 /home/wjw/PycharmProjects/face/find_nose.py

[{‘chin‘: [(280, 439), (282, 493), (283, 547), (290, 603), (308, 654), (340, 698), (380, 733), (427, 760), (485, 770), (544, 766), (592, 738), (634, 704), (668, 661), (689, 613), (701, 563), (712, 514), (722, 466)], ‘left_eyebrow‘: [(327, 373), (354, 340), (395, 323), (442, 324), (487, 337)], ‘right_eyebrow‘: [(560, 344), (603, 340), (647, 348), (682, 372), (698, 410)], ‘nose_bridge‘: [(519, 410), (517, 444), (515, 477), (513, 512)], ‘nose_tip‘: [(461, 548), (485, 554), (508, 561), (532, 558), (555, 556)], ‘left_eye‘: [(372, 424), (399, 420), (426, 420), (451, 429), (424, 433), (397, 432)], ‘right_eye‘: [(577, 440), (605, 437), (631, 442), (655, 451), (628, 454), (601, 449)], ‘top_lip‘: [(415, 617), (452, 600), (484, 593), (506, 600), (525, 598), (551, 610), (579, 634), (566, 630), (524, 620), (504, 619), (482, 616), (428, 616)], ‘bottom_lip‘: [(579, 634), (546, 636), (518, 636), (498, 635), (475, 632), (447, 626), (415, 617), (428, 616), (479, 605), (500, 610), (520, 610), (566, 630)]}]

Process finished with exit code 0

美图

寻找面部特征对于许多重要的东西非常有用,比如美图。

from PIL import Image, ImageDraw
import face_recognition

# 将图片文件添加到numpy数组中
 image = face_recognition.load_image_file("1.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()

  

(丑了哈?没关系,技术重要!!)

识别图片中的面孔

  

# 导入face_recognition模块
import face_recognition

# 识别图像中出现的人脸
# 获取每个图像文件中每个面部的面部编码
known_image = face_recognition.load_image_file("zhangjie.jpg")
unknown_image = face_recognition.load_image_file("uknow.jpg")

# 由于每个图像中可能有多个人脸,所以返回一个编码列表。
# 但是事先知道每个图像只有一个人脸,每个图像中的第一个编码,取索引0。
biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

# 获取比较结果
result = face_recognition.compare_faces([biden_encoding],unknown_encoding)

print(result)

原文地址:https://www.cnblogs.com/wjw1014/p/10256772.html

时间: 2024-08-25 17:28:35

face_recognition 基础接口的相关文章

.net微信公众号开发——基础接口

本文讲述微信公众号开发中基础接口的使用,包括以下内容:    (1)获取许可令牌(AccessToken):    (2)获取微信服务器地址:    (3)上传.下载多媒体文件:    (4)创建.显示二维码:    (5)长链接转短链接.    开源项目地址:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount    本文的源代码地址:http://git.oschina.net/xrwang2/xrwang.weixin.Pub

MMORPG大型游戏设计与开发(服务器 AI 基础接口)

一个模块都往往需要统一的接口支持,特别是对于非常大型的模块,基础结构的统一性非常重要,它往往决定了其扩展对象的通用性.昨天说了AI的基本概述以及组成,作为与场景模块中核心一样重要的地位,基础部分的设计尽量的统一.详细.通用.精简. 游戏截图 基础接口(base) 1.管理方法 初始化(init).释放(release).获得NPC队伍指针(get npc team).内部逻辑循环函数(activate). 2.状态方法(ing) 休闲(idle).闲逛(wander).巡逻(partol).警戒

PHP 面向对对象基础(接口,类)

介绍PHP面向对象的基础知识 1. 接口的定义interface ,类定义class,类支持abstract和final修饰符,abstract修饰为抽象类,抽象类 不支持直接实例化,final修饰的类/方法不能被继承/方法重写.2. 接口的实现通过implements,类继承extends interface IShape{ function draw_core(); }; class PathShape implements IShape{ public function draw_core

php获取微信基础接口凭证Access_token

php获取微信基础接口凭证Access_token的具体代码,供大家参考,具体内容如下 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. 使用AppID和AppSecret调用本接口来获取access_token.AppID和AppSecret可在微信公众平台官网-开发者中心页中获得. 1. 构造一个请求函数

Java学习关于集合框架的基础接口--Collection接口

 集合框架(Collection  Framework)是Java最强大的子系统之一,位于java.util 包中.集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术.Java集合框架标准化了程序处理对象组的方式. 集合框架在设计上需要满足几个目标.首先,框架必须是高性能的.基本集合(动态数组.链表.树以及哈希表)的实现是高效率的.很少需要手动编写这些数据引擎中的某一个.其次,框架必须允许不同类型的集合以类似的方式进行工作,并且具有高度的互操作性.再次,扩展或改造必须易于实现.为了满

Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性

一.接口与归一化设计 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 由于python中没有Interface方法,根据Java接口的定义,可以抽象出python中的接口:一个类所具有的方法的特征集合. 可以通过继承来实现接口方法,在python中,继承有两种用途: 继承基类的方法,并且做出自己的改变或者扩展(代码重用) 声明某个子类兼容于某基类,定义一个接口类Inte

JAVA基础接口集合框架

接口--------------------------------------------------------------------------------一.接口(是一种规范)1.接口名/接口文件与类类似,也是用.java文件编写2.关键字 interface 接口名命名规范与类名相同 习惯上可以使用I开头表示3. 接口额访问修饰符只能使用public和default修饰不能使用private和protected在接口中默认缺省为public4.接口中的所有属性只能为公开的静态的常量而

python基础--接口与归一化设计、封装、异常、网络编程

1 接口与归一化设计 1.1 归一化概念: 归一化的好处: 1.归一化让使用者无需关心对象的类是什么,只需要知道这些对象都具备某些功能就可以了,这极大降低了使用者的使用难度. 2.归一化使得高层的外部使用者可以不加区分的处理所有接口兼容的对象集合 继承的两种用途 一:继承基类的方法,并且做出自己改变或者扩展(代码重用):实践中,继承的这种用途意义并不很大,甚至常常是有害的.因为它使得子类与基类出现强耦合. 二:声明某个子类兼容于某基类,定义一个接口类(模仿java的Interface),接口类中

java基础--接口与反射总结

一.接口 接口中所有的方法默认public static final,不必再写. 接口中可以定义常量,但不能含有实例域.在java SE8之前,不能在接口中实现方法. 一个类可以实现多个方法implements 接口1,接口2...多个接口之间用","隔开. 克隆:要实现克隆先实现Cloneable接口,重新定义clone方法,并指定public修饰符. 默认clone是浅克隆,要实现深克隆需要自己重写clone. 所有的数组类型都有一个public的clone方法. 二.反射 概念: