转载请注明出处:http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/
文章链接:http://blog.csdn.net/hongbin_xu/article/details/74981819 或 http://hongbin96.com/125

Face++介绍:

Face++平台提供一整套世界领先的人脸检测,人脸识别,面部分析的视觉技术服务。通过提供云端API、离线SDK等供用户进行开发,像支付宝人脸支付使用的技术就是Face++。(face++的介绍)

每个人在Face++的官网注册账号后可以申请新建API,填写相关信息后,随后会分配API key和 API Secrect。我们可以选择试用的服务,由于是免费的有的功能不支持。

分配的API key和 API Secrect,有了这两个东西才能调用api。

官网提供了API文档和演示。

打开api文档可以查看详细说明,很详细不多说了。

实验平台:

我的测试程序是在Ubuntu下自带的Python环境下编写,用到了Python-OpenCV,所以要装一下Python-OpenCV。

console下输入:

sudo apt-get install python-opencv

很快就会安装完成,并且会自动配置好环境变量。

import cv包和cv2包看看,发现没有报错,安装成功。

代码:

# -*- coding:utf-8 -*-
import cv2
import urllib2
import urllib
import time#读取原图,并显示
img = cv2.imread("football_players.jpeg")
cv2.namedWindow("原图")
cv2.imshow("原图", img)#URL
http_url='https://api-cn.faceplusplus.com/facepp/v3/detect'
#用户信息
key = "RU8VkInUd4zpcCo2GbKxPz90rPoaY5O0"
secret = "01YadiHNX_Fpqw6saBYa2POD6ozL6gWu"
#图片存储路径
filepath = r"/home/xhb/Study/FaceRecognition/python-opencv-face++/football_players.jpeg"#这后面的都是给的示例代码,调用API接口
boundary = '----------%s' % hex(int(time.time() * 1000))
data = []
data.append('--%s' % boundary)
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_key')
data.append(key)
data.append('--%s' % boundary)
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_secret')
data.append(secret)
data.append('--%s' % boundary)
fr=open(filepath,'rb')
data.append('Content-Disposition: form-data; name="%s"; filename=" "' % 'image_file')
data.append('Content-Type: %s\r\n' % 'application/octet-stream')
data.append(fr.read())
fr.close()
data.append('--%s--\r\n' % boundary)http_body='\r\n'.join(data)
#buld http request
req=urllib2.Request(http_url)
#header
req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)
req.add_data(http_body)
try:#req.add_header('Referer','http://remotserver.com/')#post data to serverresp = urllib2.urlopen(req, timeout=5)#get responseqrcont=resp.read()print qrcont        #打印出得到的结果except urllib2.HTTPError as e:print e.read()#进过测试前面的程序会返回一个字典,其中指出了人脸所在的矩形的位置和大小等,所以直接进行标注
mydict = eval(qrcont)
faces = mydict["faces"]
faceNum = len(faces)
print("识别到了%d个人脸"%(faceNum))for i in range(faceNum):face_rectangle = faces[i]['face_rectangle']width =  face_rectangle['width']top =  face_rectangle['top']left =  face_rectangle['left']height =  face_rectangle['height']start = (left, top)end = (left+width, top+height)color = (55,255,155)thickness = 3cv2.rectangle(img, start, end, color, thickness)cv2.namedWindow("识别后")
cv2.imshow("识别后", img)cv2.waitKey(0)
cv2.destroyAllWindows()# print type(resp)

程序不复杂,按照程序思路简单解释下:
1、指定图片的名称,读取图片,并显示。

#读取原图,并显示
img = cv2.imread("football_players.jpeg")
cv2.namedWindow("原图")
cv2.imshow("原图", img)

把图片直接放在当前目录下即可(图片是巴萨的<( ̄︶ ̄)>)。

2、填一些调用api相关的信息,根据需要自己改就行。

#URL
http_url='https://api-cn.faceplusplus.com/facepp/v3/detect'
#用户信息
key = "RU8VkInUd4zpcCo2GbKxPz90rPoaY5O0"
secret = "01YadiHNX_Fpqw6saBYa2POD6ozL6gWu"
#图片存储路径
filepath = r"/home/xhb/Study/FaceRecognition/python-opencv-face++/football_players.jpeg"

从api文档可以查到,detect的URL:
https://api-cn.faceplusplus.com/facepp/v3/detect

用户信息要填上自己在前面申请的API Key和API Secret。

要传送图片到face++的服务器去进行识别,填上图片所在的目录的路径:

当前目录路径+图片名。

#图片存储路径
filepath = r"/home/xhb/Study/FaceRecognition/python-opencv-face++/football_players.jpeg"

3、中间的程序其实就是把信息封装一下,建立网络链接,然后跟服务器通信。调用urlopen()访问服务器,返回resp,打印结果。

try:#req.add_header('Referer','http://remotserver.com/')#post data to serverresp = urllib2.urlopen(req, timeout=5)#get responseqrcont=resp.read()print qrcont        #打印出得到的结果except urllib2.HTTPError as e:print e.read()

4、resp是返回的数据。调用read()方法,转换成qrcont,这是个字符串,然后在终端打印出来。
终端的全部打印信息:

很明显,返回的resp是一个字典,其中记录了一些图片的信息,还有识别出的人脸的位置。
qrcont是一组字符串,调用eval()函数将其转换回字典类型,取出来再处理一下,在图片上标识出人脸的位置。

#进过测试前面的程序会返回一个字典,其中指出了人脸所在的矩形的位置和大小等,所以直接进行标注
mydict = eval(qrcont)
faces = mydict["faces"]
faceNum = len(faces)
print("识别到了%d个人脸"%(faceNum))for i in range(faceNum):face_rectangle = faces[i]['face_rectangle']width =  face_rectangle['width']top =  face_rectangle['top']left =  face_rectangle['left']height =  face_rectangle['height']start = (left, top)end = (left+width, top+height)color = (55,255,155)thickness = 3cv2.rectangle(img, start, end, color, thickness)

运行结果:

调用face++平台api进行人脸识别相关推荐

  1. 树莓派调用百度人脸识别API实现人脸识别

    前言 树莓派配置OpenCV,配置起来有点繁琐且耗时,调用百度智能云的人脸识别API是一个很好的解决方案 文章目录 前言 一.申请AppID.API Key和Secret Key 1.1创建应用 1. ...

  2. 树莓派人脸识别python_树莓派调用百度人脸识别API实现人脸识别

    前言 树莓派配置OpenCV,配置起来有点繁琐且耗时,调用百度智能云的人脸识别API是一个很好的解决方案 接上摄像头的树莓派.png 一.申请AppID.API Key和Secret Key 1.1 ...

  3. python3调用百度API完成人脸识别,检测人种-年龄-性别-颜值-眼镜

    https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 参考博客:https://blog.csdn.net/qq_38412868/artic ...

  4. python 百度人脸 sdk,树莓派调用百度人脸识别API实现人脸识别

    前言 树莓派配置OpenCV,配置起来有点繁琐且耗时,但是调用百度智能云的人脸识别API来进行人脸识别是一个快速的解决方案 一.申请AppID.API Key和Secret Key 1.1创建应用 在 ...

  5. 树莓派+百度api实现人脸识别

    title: 树莓派+百度api实现人脸识别 tags: 树莓派 date: 2018-5-31 20:06:00 --- 树莓派对接百度api 我以前玩安卓的时候一直用的讯飞的平台和api,对于百度 ...

  6. 使用Azure人脸API对图片进行人脸识别

    人脸识别是人工智能机器学习比较成熟的一个领域.人脸识别已经应用到了很多生产场景.比如生物认证,人脸考勤,人流监控等场景.对于很多中小功能由于技术门槛问题很难自己实现人脸识别的算法.Azure人脸API ...

  7. JavaWeb使用百度人工智能API实现人脸识别登录,人脸注册

    1.JavaWeb使用百度API实现人脸识别 本篇博客使用的环境是SSM+Maven+JSP实现人脸识别登录,适合于JavaWeb的开发(其他语言也可以作为参考),我会从注册百度云账号,前台如何调用摄 ...

  8. android 身份认证技术,Android平台上基于人脸识别的身份认证系统的设计与实现

    摘要: 随着移动互联网与人工智能技术的发展,基于个人特征的生物识别技术代替传统的身份验证方式已经是大势所趋.而人脸识别是生物识别技术的一个重要组成部分,拥有其他生物识别技术没有的独特优势.本文主要针对 ...

  9. Python+OpenCV 调用手机摄像头并实现人脸识别

    文章内容: 1.windows 环境下安装 OpenCV 机器视觉环境搭建: 2.基于通过 Python+OpenCV调用手机摄像头并实现人脸检测识别. 目录 1 实验环境 2 实验准备 2.1 下载 ...

最新文章

  1. Bruck:一个Web界面布局原型设计框架\n
  2. [深入浅出Cocoa]iOS网络编程之Socket
  3. JavaScript之function类型
  4. Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
  5. daterangepicker 使用方法总结
  6. javascript创建对象的几种方式 .
  7. Terracotta Express Model 和 Terracotta Customized Model
  8. Windows2003 安装MVC4 环境的步骤
  9. 【PostgreSQL-9.6.3】进程及体系结构
  10. python编程符号大全_2020 年最值得学习的 5 大 AI 编程语言
  11. [JNI] 开发基础(7)结构体
  12. lisp型材库_基于Visual Lisp的面向对象零件库的开发
  13. 日记侠:我为什么学习网络营销
  14. IO口读写实验微型计算机,微机原理与单片机实验报告.doc
  15. 数据地图在商业数据分析中的5种应用
  16. html调用网易云播放器无法自动播放,网页内嵌网易云插件全程(包括生成自己歌单的外链)...
  17. 转:年轻员工不听话?可能是他们想听的话和以前不同了
  18. 使用puppet自动化升级安全程序
  19. IT人的架构书单:如何赋予软件以灵魂
  20. linux可用直播软件,免费直播软件OBS Studio下载 支持Windows/Mac和Linux

热门文章

  1. airpods固件更新方法_苹果AirPods 2 和 AirPods Pro固件升级
  2. 顺序表应用3:元素位置互换之移位算法
  3. 【数学和算法】初识卡尔曼滤波器(五)
  4. An overview of gradient descent optimization algorithms
  5. 编辑从字节码和 JVM 的角度解析 Java 核心类 String 的不可变特性
  6. Java transient关键字使用小记
  7. Excel表格数据导入到SQLServer数据库
  8. Java集合总结汇总(链接)
  9. Intellij Idea/Webstorm/Phpstorm 的高效快捷键
  10. 成为优秀程序员的方法就是抛开编程?