百度接口人脸检测,识别率很高,而且操作简单。网上百度还未见到借助百度云接口API和人脸库完成本地合影图片的多人脸识别,本人编写的代码可以实现,但觉得不够简洁,代码数还可以精减,欢迎交流。

1.准备工作

1.1 构建使用环境

Windows x、python3.x

1.2 申请百度人脸识别API服务

注册并登录百度帐号,在产品中找到“”人脸识别”产品,点击“立即使用”,然后创建一个应用。

我已创建

获取三个参数:APPID、API Key、Secret Key

1.3 安装baidu的aip库 pip install baidu-aip

1.4 重要的区块代码

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

1.5 建立人脸库

登录百度帐号,点出进入"人脸库管理"。在人脸库列表中,会自动生成一个你先前创建的应用的一个独立的人脸库,我创建了个人脸库名称为“zwy人脸识别”。

在人脸库中点击“zwy人脸识别”,我们可以新建用户组,比如新建用户组”qq”

创建完成后,我们就可以向其中添加人脸图像

点击“qq”,我们可以新建用户,点出"添加图片",最多可添加10张图片。

2. 工程构建。当前目录中有:

  • 主程序badua_faces_recognition_faces.py
  • shape_predictor_68_face_landmarks.dat
  • 子目录(如zkk),用于存放合影中各人的人脸图片

3. 运行结果


结果为(zym存的是张艺谋照片,gli存的是巩俐的照片)

4.badua_faces_recognition_faces.py 完整代码

C:\Users\Administrator\Desktop\5566.jpg

"""使用百度云接口和人脸库完成本地合影图片的多人脸识别"""
from aip import AipFace
import base64
import dlib
import matplotlib.pyplot as plt
import numpy as np
import os, math,cv2
from skimage import io"""
人脸特征点检测
"""
def rect_to_bb(rect): # 获得人脸矩形的坐标信息x = rect.left()y = rect.top()w = rect.right() - xh = rect.bottom() - yreturn (x, y, w, h)"""
人脸对齐
"""
def face_alignment(faces):predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat") # 用来预测关键点faces_aligned = []for face in faces:rec = dlib.rectangle(0,0,face.shape[0],face.shape[1])shape = predictor(np.uint8(face),rec) # 注意输入的必须是uint8类型     order = [36,45,30,48,54] # left eye, right eye, nose, left mouth, right mouth  注意关键点的顺序,这个在网上可以找for j in order:x = shape.part(j).xy = shape.part(j).yeye_center =((shape.part(36).x + shape.part(45).x) * 1./2, # 计算两眼的中心坐标(shape.part(36).y + shape.part(45).y) * 1./2)dx = (shape.part(45).x - shape.part(36).x) # note: right - rightdy = (shape.part(45).y - shape.part(36).y)angle = math.atan2(dy,dx) * 180. / math.pi # 计算角度RotateMatrix = cv2.getRotationMatrix2D(eye_center, angle, scale=1) # 计算仿射矩阵RotImg = cv2.warpAffine(face, RotateMatrix, (face.shape[0], face.shape[1])) # 进行放射变换,即旋转faces_aligned.append(RotImg)return faces_aligneddef feature(path,foces):im_raw =cv2.imread(foces).astype('uint8')   detector = dlib.get_frontal_face_detector()gray = cv2.cvtColor(im_raw, cv2.COLOR_BGR2GRAY)rects = detector(gray, 1)src_faces = []for (i, rect) in enumerate(rects):(x, y, w, h) = rect_to_bb(rect)detect_face = im_raw[y:y+h,x:x+w]src_faces.append(detect_face)cv2.rectangle(im_raw, (x, y), (x + w, y + h), (0, 255, 0), 2)cv2.putText(im_raw, "Face: {}".format(i + 1), (x - 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)faces_aligned = face_alignment(src_faces)#cv2.imshow("src", im_raw)    for j in os.listdir(path):                 #清空拟装合影照片中分离人脸目录中的文件os.remove(path+'\\'+j)         i = 0for face in faces_aligned:#cv2.imshow("det_{}".format(i), face)i = i + 1        io.imsave(path+'\\'+'Face{}.jpg'.format(i),face)#cv2.imshow("Output", im_raw)cv2.waitKey(0)def AipFaceRecognition(pathfile):               with open(pathfile,"rb") as f:  # b64encode是编码base64_data = base64.b64encode(f.read())image = str(base64_data,'utf-8')imageType = "BASE64"  #3种"URL","FACE_TOKEN"groupIdList = "qq"      #你上传百度人脸库照片,用户组ID名叫"qq"""" 调用人脸搜索 """a=client.search(image, imageType,groupIdList)  #print(a['user_list'][2][ 'user_id'],a['user_list'][3][ 'score'])return a    #['result']['user_list'][0]['user_id']if __name__ == "__main__":focePath=r'C:\Users\Administrator\Desktop\123.jpg'   #合影照片人不能超10人"""合影照片中分离人脸子目录"""path = r'zkk' """ 你的 APPID AK SK """APP_ID = '154***06'API_KEY = 'MUlz7*******cOLo6EGRfbq'SECRET_KEY = 'vt0Ob07*******ceacv0IqAzACxsCy'client = AipFace(APP_ID, API_KEY, SECRET_KEY)feature(path,focePath)userlist=[]for i in os.listdir(path):pathfile=path+'\\'+iA=AipFaceRecognition(pathfile)if A.get('result',None) !=None:if A['result']['user_list'][0]['score']>50:    #取相似值大于50%#print('{}照片同{}相似度为{}'.format(i,A['result']['user_list'][0]['user_id'],A['result']['user_list'][0]['score']))print('{}照片同{}相似'.format(i,A['result']['user_list'][0]['user_id']))

使用百度云接口API和人脸库完成本地合影图片的多人脸识别--V3版接口Python语言相关推荐

  1. 树莓派实现语音识别与语音合成——百度云语音识别API

    本文采用百度云语音识别API接口,实现低于60s音频的语音识别,也可以用于合成文本长度小于1024字节的音频,此外采用snowboy离线语音唤醒引擎可实现离线语音唤醒,实现语音交互.基于本内容可实现语 ...

  2. python使用百度云的API识别图片中的文字

    python使用百度云的API识别图片中的文字 # coding=utf-8import sys import json import base64IS_PY3 = sys.version_info. ...

  3. 百度云 php api接口调用 签名计算

    本文介绍百度智能云 计算签名 公共头 调用api接口调用: post请求示例 require "auth.php"; //此文件是百度云官网提供实例,下方可直接粘贴使用. // 第 ...

  4. linux 百度云 备份软件下载,百度云存储api实现文件分享及linux下的备份上传

    这次讲解下,百度网盘的api使用方法,一个让我们可以把linux上的文件传到一个强大又免费的空间上... 为啥会研究这个? 偶然,一定是偶然.要是想从服务器里面把东西传出来,反正就是把东西搞出来.以前 ...

  5. 计算机二级题百度云,计算机二级office题库

    office是一项非常实用的办公技能,熟练掌握二级office操作能够让工作效率进一步提高.小编今天便为备考二级office的用户准备了2020最新版计算机二级office题库软件,这款软件为用户提供 ...

  6. 国家计算机一级考试题库百度云,全国计算机一级考试题库

    全国计算机一级考试题库 更新时间:2017/5/23 22:38:00 想要考好一门试,考前的准备工作十分重要,下面bwXu.com小编跟大家分享一些计算机一级考试题,以供参考! 一.填空题(每空1分 ...

  7. 同等学力计算机 百度云,2020计算机二级题库百度云_圣考研网

    圣考研官网--内容摘要: 2020年3月全国计算机等级考试<二级Visual FoxPro数据库程序设计>题库[历年真题+章节题库+模拟试题]本资料来源:圣考学习网(http://all. ...

  8. 计算机三级数据库选择题题库百度云,计算机三级数据库题库2016(附答案)

    计算机三级数据库题库2016(附答案) 一.选择题 1.下列关于数据库备份的说法中,正确的是__________. A.对系统数据库和用户数据库都应采用定期备份的策略 B.对系统数据库和用户数据库都应 ...

  9. 计算机二级PS教学视频百度云,计算机二级ps考试题库完整教程文件.pdf

    __________________________________________________ 考试内容 (一)图层 [考试要求] 掌握图层的工作原理和基本操作. [操作考点] 熟练掌握图层的新 ...

最新文章

  1. 【转载】 Python 调整屏幕分辨率
  2. OpenCV与c语言图像融合
  3. springboot发送http请求
  4. staruml无法打开mdj文件_StarUML使用说明
  5. 什么是IDOC,以及IDOC的步骤
  6. 前端知识点总结---面试专用
  7. 给定条件找最小值c语言程序_根据给定条件最小化n的最小步骤
  8. 剑指offer题目汇总
  9. Python将浏览器cookies共享给requests库
  10. 6 追前沿,领略SET化架构衍化与设计
  11. java 避免大量if else_利用java的反射避免 多个 if else if else if else if
  12. qmenu基本用法_使用QProxyStyle定制QMenu (二)
  13. js的基本类型有哪些?引用类型有哪些?(二)------null和undefined的区别
  14. ASP实现AJAX的几种方式!
  15. 昨晚我把900W+数据,从17s优化到300ms
  16. 尚硅谷java——个人收支记录软件
  17. 微信小程序服务器端语言,微信小程序后端用什么语言好
  18. 基于STM32设计的车库监控报警系统
  19. 弘辽科技:淘宝开店类别怎么选择?淘宝开店如何选类目?
  20. Excel AES加密

热门文章

  1. WindowBuilder的卸载
  2. php图片木马抓鸡,从零开始学安全(三十八)●cobaltstrike生成木马抓肉鸡
  3. ArcGIS Engine开发学习(2)控件的使用案例
  4. 『三分钟学分析』:品牌知名度分析实例
  5. visio2013中的网格线怎么去除
  6. Chrome出现“浏览器由所属组织管理”如何解决
  7. 计算机视觉算法——基于深度学习的高精地图算法(HDMapNet / VectorMapNet / MapTR / VectorNet)
  8. 置顶窗口SetWindowPos()的用法
  9. linux socket-recvfrom系统调用
  10. vue几条常见的表单验证规则