#-*- coding: utf-8 -*-
import urllib.request
import urllib.error
import time
import re
#json 交互协议
import json
import cv2 as cv
import numpy as np
http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect'
key = 创建的API key的API key
secret = 创建的API key的API Secret
#图像地址
path_name = 图像地址
filepath = r''+path_name
#将时间变成十六进制
boundary = '----------%s' #% hex(int(time.time() * 1000))
data = []
#boundary边界
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)
#二进制方法读取 'rb
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' % boundary)
#return_landmark 是否检测并返回人脸关键点
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_landmark')
'''
0 不检测
1 检测,返回 83 个人脸关键点
2 检测,返回 106 个人脸关键点
'''
data.append('1')
data.append('--%s' % boundary)
#return_attributes 是否检测并返回根据人脸特征判断出的年龄、性别、情绪等属性
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_attributes')
data.append(
"gender,age,smiling,headpose,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus")
data.append('--%s--\r\n' % boundary)
#改变编码格式
for i, d in enumerate(data):
if isinstance(d, str):
data[i] = d.encode('utf-8')
http_body = b'\r\n'.join(data)
# 生成HTTP请求
req = urllib.request.Request(url=http_url, data=http_body)
# header
req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)
try:
# 将数据发布到服务器
resp = urllib.request.urlopen(req, timeout=5)
#得到响应
qrcont = resp.read()
# 如果你想加载为JSON,你应该先解码
# for example: json.loads(qrcont.decode('utf-8'))
qrcont = qrcont.decode('utf-8')
#将字符串解码变成字典
qrcont =json.loads(qrcont)
# print(qrcont)
cv.namedWindow('img',cv.WINDOW_NORMAL)
'''
不带中文路径的图像
img = cv.imread(path)
'''