调用百度AipFace做人脸检测
需要注意的几个问题:
1.需要在百度人脸识别云平台注册账号并登陆:https://login.bce.baidu.com/?account=
然后创建人脸检测应用,则会生成相应的APP_ID API_KEY SECRET_KEY,开发时要用到
# 定义常量
APP_ID = '*****'
API_KEY = '*****'
SECRET_KEY = '************'
2.读图像数据主要用到的两种格式,示例如下
image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串"
# image = "http://n1.itc.cn/img8/wb/recom/2017/04/19/149256623627782055.JPEG"
# imageType = "URL"filepath = "D:\\Project\\FaceReg\\test.jpg"
with open(filepath, "rb") as fp:base64_data = base64.b64encode(fp.read())
image = str(base64_data, 'utf-8')
imageType = "BASE64"
3.可以定义人脸检测的最大检测人脸数,默认为1,最大为10
# 定义参数变量options = {}
options["face_field"] = "age"
options["max_face_num"] = 10
options["face_type"] = "LIVE"
4.画人脸检测框,cv2.rectangle()只能画标准的矩形框,不能画倾斜的,故使用cvline()一条条画,但一定要找准4个顶点。经多次尝试,可以画出很好的检测框。但里面有个参数解释不通,还需要后续继续搞明白。
下面贴下所有源码:
from aip import AipFace
import cv2
import matplotlib.pyplot as plt
import math
import base64# 定义常量
APP_ID = '*****'
API_KEY = '*******'
SECRET_KEY = '*******************************'#初始化AipFace对象
aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY)#读取图片# image = "http://n1.itc.cn/img8/wb/recom/2017/04/19/149256623627782055.JPEG"
# imageType = "URL"filepath = "D:\\Project\\FaceReg\\test.jpg"
with open(filepath, "rb") as fp:base64_data = base64.b64encode(fp.read())
image = str(base64_data, 'utf-8')
imageType = "BASE64"# 定义参数变量options = {}
options["face_field"] = "age"
options["max_face_num"] = 10
options["face_type"] = "LIVE"# 调用人脸属性检测接口
result = aipFace.detect(image, imageType, options)print(result)
print(type(result))# 读取原图
# cap = cv2.VideoCapture(image)
# ret, img = cap.read()
img = cv2.imread(filepath)#解析位置信息
face_num = result['result']['face_num']for num in range(0,int(face_num)):print(num)location = result['result']['face_list'][num-1]['location']# print(location)# print(location['face_list'][0])Theta = location['rotation'] / 60 ### 注意:为啥是60度,自己多次测试的结果,必须得弄清楚rotation啥意思,相对于哪里的旋转角度A = (int(location['left']),int(location['top']))B = (int(location['left'])+int(location['width']*math.cos(Theta)),int(location['top'])+int(location['width']*math.sin(Theta)))AC_Len = math.sqrt(location['width']**2 + location['height']**2)AC_Theta = math.atan(location['height']/location['width'])+location['rotation']/60 ####或者是???C = (int(location['left']) + int(AC_Len*math.cos(AC_Theta)), int(location['top'])+int(AC_Len*math.sin(AC_Theta)))D = (int(location['left'])-int(location['height']*math.sin(Theta)), int(location['top']) + int(location['height']*math.cos(Theta)))cv2.line(img, A, B, (0, 0, 255), 2)cv2.line(img, B, C, (0, 0, 255), 2)cv2.line(img, C, D, (0, 0, 255), 2)cv2.line(img, D, A, (0, 0, 255), 2)# left_top = (int(location['left']),int(location['top']))# right_bottom = (left_top[0]+int(location['width']),left_top[1]+int(location['height']))# cv2.rectangle(img,left_top, right_bottom, (0,0,255),2)cv2.imshow('img', img)
cv2.waitKey(0)plt.imshow(img, 'gray')
plt.show()
最后给出程序运行结果:
调用百度AipFace做人脸检测相关推荐
- 【Python】调用百度云API人脸检测 Face Detect
# encoding:utf-8 # !/usr/local/bin/python3# 百度云:驾驶行为分析 # 应用名称:驾驶行为分析测试import urllib3 from urllib.par ...
- vpa函数python_python 调用百度接口 做人脸识别
操作步骤差不多,记得要在百度AIPI中的控制台中创建对应的工单 创建工单成功后 会生成两个key 这个两个key是要生成tokn 用 这里大家可以用 def函数 将token返回 供下面的接口使用 ...
- python3调用百度API完成人脸识别,检测人种-年龄-性别-颜值-眼镜
https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 参考博客:https://blog.csdn.net/qq_38412868/artic ...
- OpenCV调用手机摄像头与人脸检测
文章目录 一.OpenCV机器视觉环境搭建 1. OpenCV下载 2. OpenCV安装 3. 安装测试 二.OpenCV调用摄像头及人脸检测 1. 调用电脑摄像头 2. 调用手机摄像头及人脸检测 ...
- dlib做人脸检测判断有没有检测到人脸
dlib做人脸检测判断有没有检测到人脸 文章目录: 一.人脸检测 二.判断有没有检测到人脸 其实我用dlib 检测人脸只是用来做个触发条件,但是我不知道怎么判断有没有检测到人,因为从返回值只知道是一个 ...
- OpenCvSharp人脸检测(二) DNN加载Caffe模型做人脸检测
更多视觉图像处理相关内容,可关注[OpenCV与AI深度学习]公众号获取! 本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍OpenCvSharp人脸检测(二) DNN加载Caf ...
- C# OpenCV人脸检测(三) DNN加载FaceDetectorYN模型做人脸检测
点击下方卡片,关注"OpenCV与AI深度学习"公众号 视觉/图像重磅干货,第一时间送达 本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍C# OpenCV人 ...
- 基于python3,百度AI实现人脸检测,人脸识别
我感觉百度是BAT三家里面AI能力最强的了,在图像和语音的处理上面是很强的,很全面.百度AI里面功能齐全,提供的语言也是很多.唯一不太好的是目前对python3不是很支持,还是支持python2.但也 ...
- C#窗口调用百度云实现人脸识别。(注意代码中添加的控件以及部分传值给函数,亲测百分百可用。)
调用的dll库文件 代码模块 首先是连接开启电脑摄像头,拍照后保存照片到本地. 然后是调用百度云: 1.获取百度云access_token与百度云连接: 2.建立控制太应用:人脸识别: 3.人脸库的人 ...
最新文章
- 关闭页面不用提示的方法
- C# 利用WMI对象获取物理内存和可用内存大小
- linux系统UDP的socket通信编程
- php把数字转化字符串,php中把数字转化为字符串的方法有哪些?-PHP问题
- RHEL 8 - 记录用户会话操作
- 互联网时代: 从Uber的供需匹配看开发需求
- linux内核启动地址的确定
- Linux 常用系统工具与初始化配置
- MySQL中删除表中并不存在的数据不报错
- Linux下nand flash读写测试
- Android、iPhone和Java三个平台一致的加密方法
- Mysql大字段blob返回是数字_innodb使用大字段text,blob的一些优化建议(转)
- pandas读取csv文件UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xca in position 37: invalid contin
- 台式机怎样连接连接蓝牙耳机?搜索不到蓝牙耳机?
- 【POI2013】bzoj3426 Tower Defence Game
- JAVA12_12学习总结(JavaScript)
- 推荐系统论文阅读——Factorizing Personalized Markov Chains for Next-Basket Recommendation
- 树莓派3B+插入电源后状态灯只有红灯常亮,无法接入屏幕
- linux设备树笔记__dts基本概念及语法
- 中信银行面试前准备好多材料_面试准备帮助我在锁定期间获得了多个报价