概述
之前的博客中体验了百度AI图像识别的SDK,相信很多人跟我一样对人脸识别也有着很深的兴趣,今天来试一下这套SDK里的face相关的模块。其中SDK的下载和部署这里不再赘述,详细的可以参考上一篇博客。
这里我们同样需要在百度AI控制台里创建一个人脸识别的应用,下面是代码,只需要将需要比对的图片放在py文件所在目录下执行py文件即可。
# -*- coding: UTF-8 -*-
from aip import AipFace
import cv2
import base64
import sys
sys.setrecursionlimit(1000000)
#初始化aipFace
APP_ID = '11222528'
API_KEY = 'l1CAmQTvS5IAgWeurQv2WPyF'
SECRET_KEY = 'dmZ9zDvoVqImWkoSxGdYKHaF6Zwh4vaG'
aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY)
#人脸检测部分
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
options = {
'max_face_num': 1, # 人脸数量
'face_fields': "expression,faceshape",
}
result1 = aipFace.detect(get_file_content('test1.jpg'), options)
# 解析位置信息1
location1=result1['result']['face_list'][0]['location']
left_top1=(int(location1['left']),int(location1['top']))
right_bottom1=(int(left_top1[0]+location1['width']),int(left_top1[1]+location1['height']))
img1=cv2.imread('test1.jpg')
cv2.rectangle(img1,left_top1,right_bottom1,(0,255,0),2)
cv2.imshow('img1',img1)
result2 = aipFace.detect(get_file_content('test2.jpg'), options)
# 解析位置信息2
location2=result2['result']['face_list'][0]['location']
left_top2=(int(location2['left']),int(location2['top']))
right_bottom2=(int(left_top2[0]+location2['width']),int(left_top2[1]+location2['height']))
img2=cv2.imread('test2.jpg')
cv2.rectangle(img2,left_top2,right_bottom2,(0,255,0),2)
cv2.imshow('img2',img2)
#人俩比对部分
result = aipFace.match([
{
'image' : base64.b64encode(open('test1.jpg', 'rb').read()).decode(),
'image_type': 'BASE64',
},
{
'image' : base64.b64encode(open('test2.jpg', 'rb').read()).decode(),
'image_type': 'BASE64',
}
])
#print(result)
print('n')
aaa=result['result']['score']
print ("相似得分为:"),print (aaa)
if aaa>80:
print ("图1和图2是同一个人.n")
else:
print ("图1和图2不是同一个人.n")
cv2.waitKey(100000)
我们在powershell运行.py文件,执行结果如下图所示:
下面我们来简单分析一下代码,前面的初始化aipFace就不多说了,我们直接从人脸检测说起,首先是读取图片内容,然后传入aipFace.detect函数,参数options是api返回信息的参数,在options里可以添加参数,这样result1和result2的返回信息里会有对应参数的信息,(有兴趣的朋友也可以自己打印出result1和result2的值看看里面是什么内容。)result1,2里包含了检测到的人脸位置信息,这时候我们提取出这些信息,即人脸的位置,然后利用openCV里的画矩形函数框出人脸。
下面就是人脸的比对部分代码,同样将图片转为base64后传入match函数,返回值中会包含相似得分,可以根据自己的实际情况来设置阈值,从而判断是否为同一个人。
最后
以上就是隐形魔镜为你收集整理的百度AI之图像识别SDK:实现人脸检测+比对(python)的全部内容,希望文章能够帮你解决百度AI之图像识别SDK:实现人脸检测+比对(python)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复