Face Plus Plus Python API Изменение параметров - PullRequest
0 голосов
/ 21 сентября 2018
# -*- coding: utf-8 -*-
import urllib2
import urllib
import time
http_url = 'https://api-us.faceplusplus.com/facepp/v3/detect'
key = ""
secret = ""
filepath = r"iop.jpg"
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="co33.jpg"' % '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:
    #post data to server
    resp = urllib2.urlopen(req, timeout=5)
    #get response
    qrcont=resp.read()
    print qrcont

except urllib2.HTTPError as e:
    print e.read()

Я пытаюсь изменить параметры API распознавания лиц, но я не смог этого сделать.Я хотел бы изменить код следующим образом:

def detect_image(img_path):
    endpoint = 'https://api-us.faceplusplus.com'
    img_file = base64.encodestring(open(img_path, 'rb').read())
    try:
        response = requests.post(
            endpoint + '/facepp/v3/detect',
            {
                'api_key': API_KEY,
                'api_secret': API_SECRET,
                # 'image_url': img_url,
                'image_base64': img_file,
                'return_landmark': 1,
                'return_attributes': 'headpose,eyestatus,facequality,mouthstatus,eyegaze'
            }
        )
        # 5秒スリープ
        time.sleep(5) 

Как я хотел бы добавить дополнительные параметры, чтобы полученная информация была насыщенной.Как мне это сделать?Сейчас я получаю только координаты лица и face_token.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Использовал библиотеку запросов с локально сохраненными изображениями для реализации Faceplusplus API.Вы можете выбрать любое количество параметров в зависимости от ваших потребностей.В приведенном ниже коде перечислены все параметры.

import requests
import base64

def faceplusAPI(filepath):
    http_url = 'https://api-us.faceplusplus.com/facepp/v3/detect'
    key = "YOUR API KEY"
    secret = "API SECRET"

    fr = open(filepath,'rb')
    img64 = base64.b64encode(fr.read())
    payload = {
                'api_key': key, 
                'api_secret': secret, 
                'image_base64':img64,
                'return_attributes': 'age,gender,headpose,smiling,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus'
                }
    fr.close()
    try:
        res = requests.post(http_url, data=payload)
        return res
    except Exception as e:
        print('Error:')
        print(e)

response = faceplusAPI("IMG_8934.JPG")
0 голосов
/ 09 ноября 2018

У меня была такая же проблема, когда я пытался использовать пример кода.Я бы порекомендовал вам использовать эту более простую версию кода, которая работает на Python, вы можете добавить и другие функции, такие как return_landmark.

import requests

http_url = 'https://api-us.faceplusplus.com/facepp/v3/detect'
key = "YOUR_API_KEY"
secret = "YOUR_SECRET_API_KEY"
attributes="gender,age,ethnicity"
url="YOUR_IMAGE_URL"

json_resp = requests.post(http_url,
      data = { 
          'api_key': key,
          'api_secret': secret,
          'image_url': url,
          'return_attributes': attributes
      }
)

print("Response : ", json_resp.text)
...