600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 百度AI之图像识别SDK:实现人脸检测+比对(python)

百度AI之图像识别SDK:实现人脸检测+比对(python)

时间:2020-05-05 20:28:23

相关推荐

百度AI之图像识别SDK:实现人脸检测+比对(python)

之前的博客中体验了百度AI图像识别的SDK,相信很多人跟我一样对人脸识别也有着很深的兴趣,今天来试一下这套SDK里的face相关的模块。其中SDK的下载和部署这里不再赘述,详细的可以参考上一篇博客。

这里我们同样需要在百度AI控制台里创建一个人脸识别的应用,下面是代码,只需要将需要比对的图片放在py文件所在目录下执行py文件即可。

# -*- coding: UTF-8 -*- from aip import AipFaceimport cv2import base64import syssys.setrecursionlimit(1000000) #初始化aipFaceAPP_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)# 解析位置信息1location1=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)# 解析位置信息2location2=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函数,返回值中会包含相似得分,可以根据自己的实际情况来设置阈值,从而判断是否为同一个人。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。