使用 Face++ 和Python进行人脸比较
先决条件: Python编程语言
Python是一种高级通用语言。它用于多种用途,例如 AI、Web 开发、Web Scraping 等Python的其中一种用途可以是人脸比较。一个模块名称python-facepp可以用来做同样的事情。该模块用于与 Face++ 人脸识别服务进行通信。
所需模块
- python-facepp -要安装此模块,请在终端中键入以下命令。
pip install python-facepp
- 表情符号 -要安装此模块,请在终端中键入以下命令。
pip install emoji
应用详情
这个应用程序将同一个人或两个不同人的两张照片与他/她的面部特征,如面部标志、美容分数、面部情绪等进行比较。如果两张照片相互匹配,则应用结果为“两张照片相同人” ,否则应用程序结果是“两张照片都是两个不同的人”。
这个应用程序主要用于人脸验证过程,例如“提供一些机密
文件给你,快递小哥先验证你的脸,再送快递。”
注意: facepp
API 只允许比较两张照片的图片 URL 链接。
使用postimages.org
将图像转换为 URL。
在本网站中,通过单击“选择图像”按钮从本地驱动器中选择您的照片,然后本网站将在处理您的照片后创建不同的 URL 链接。
(见下图)
我们将使用两对照片进行比较。
一对:
对二:
下面是实现。
# Python program for face
# comparison
from __future__ import print_function, unicode_literals
from facepplib import FacePP, exceptions
import emoji
# define global variables
face_detection = ""
faceset_initialize = ""
face_search = ""
face_landmarks = ""
dense_facial_landmarks = ""
face_attributes = ""
beauty_score_and_emotion_recognition = ""
# define face comparing function
def face_comparing(app, Image1, Image2):
print()
print('-'*30)
print('Comparing Photographs......')
print('-'*30)
cmp_ = app.compare.get(image_url1 = Image1,
image_url2 = Image2)
print('Photo1', '=', cmp_.image1)
print('Photo2', '=', cmp_.image2)
# Comparing Photos
if cmp_.confidence > 70:
print('Both photographs are of same person......')
else:
print('Both photographs are of two different persons......')
# Driver Code
if __name__ == '__main__':
# api details
api_key ='xQLsTmMyqp1L2MIt7M3l0h-cQiy0Dwhl'
api_secret ='TyBSGw8NBEP9Tbhv_JbQM18mIlorY6-D'
try:
# create a logo of app by using iteration,
# unicode and emoji module-------------
for i in range(1,6):
for j in range(6,-i):
print(" " , end = " ")
for j in range(1,i):
print('\U0001F600', end =" ")
for j in range(i,0,-1):
print('\U0001F6A3', end= " ")
for j in range(i,1,-2):
print('\U0001F62B', end= " ")
print()
print()
#print name of the app--------
print("\t\t\t"+"Photo Comparing App\n")
for i in range(1,6):
for j in range(6,-i):
print(" " , end = " ")
for j in range(1,i):
print(emoji.emojize(":princess:"), end =" ")
for j in range(i,0,-1):
print('\U0001F610', end= " ")
for j in range(i,1,-2):
print(emoji.emojize(":baby:"), end= " ")
print()
# call api
app_ = FacePP(api_key = api_key,
api_secret = api_secret)
funcs = [
face_detection,
face_comparing_localphoto,
face_comparing_websitephoto,
faceset_initialize,
face_search,
face_landmarks,
dense_facial_landmarks,
face_attributes,
beauty_score_and_emotion_recognition
]
# Pair 1
image1 = 'Image 1 link'
image2 = 'Image 2 link'
face_comparing(app_, image1, image2)
# Pair2
image1 = 'Image 1 link'
image2 = 'Image 2 link'
face_comparing(app_, image1, image2)
except exceptions.BaseFacePPError as e:
print('Error:', e)
输出: