Saltar para o conteúdo principal
Este documento apresentará uma descrição da API de localização de caracteres faciais, que pode, através da entrada de uma imagem, realizar a localização dos pontos faciais (também conhecido como localização de pontos-chave do rosto), calculando 90 pontos que compõem o contorno do rosto, incluindo sobrancelhas (8 pontos de cada lado), olhos (8 pontos de cada lado), nariz (13 pontos), boca (22 pontos), contorno do rosto (21 pontos) e íris [ou pupila] (2 pontos).

Processo de Solicitação

Para usar a API, você precisa primeiro acessar a página correspondente da API de Localização de Caracteres Faciais para solicitar o serviço correspondente. Após entrar na página, clique no botão “Acquire”, conforme mostrado na imagem abaixo: Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login, convidando-o a se registrar e fazer login. Após o registro e login, você será redirecionado de volta para a página atual. Na primeira solicitação, haverá um crédito gratuito disponível, permitindo o uso gratuito da API.

Uso Básico

Primeiro, entenda a forma básica de uso, que é inserir o link da imagem para obter a imagem resultante após o processamento. Primeiro, você precisa passar um campo image_url, a imagem do rosto é mostrada na figura abaixo:

Em seguida, podemos preencher o conteúdo correspondente na interface, conforme mostrado na imagem abaixo:

Podemos ver que aqui configuramos os Request Headers, incluindo:
  • accept: o formato de resposta que você deseja receber, aqui preenchido como application/json, ou seja, formato JSON.
  • authorization: a chave para chamar a API, que pode ser selecionada diretamente após a solicitação.
Além disso, configuramos o Request Body, incluindo:
  • image_url: o link da imagem do rosto a ser processada.
  • mode: modo de detecção. 0 para detectar todos os rostos presentes, 1 para detectar o rosto de maior área. O padrão é 0.
  • face_model_version: a versão do modelo de algoritmo usado pelo serviço de reconhecimento facial, o padrão é 3.0.
  • need_rotate_detection: se a detecção de rotação da imagem deve ser ativada. 0 para não ativar, 1 para ativar. O padrão é 0.
Após a seleção, você pode notar que o código correspondente também foi gerado à direita, conforme mostrado na imagem abaixo:

Clique no botão “Try” para realizar o teste, como mostrado na imagem acima, e aqui obtivemos o seguinte resultado:
{
  "image_width": 690,
  "image_height": 920,
  "face_model_version": "3.0",
  "face_shape_set": [
    {
      "face_profile": [
        {
          "x": 294,
          "y": 207
        },
        {
          "x": 289,
          "y": 216
        },
        {
          "x": 286,
          "y": 226
        },
        {
          "x": 284,
          "y": 236
        },
        {
          "x": 283,
          "y": 246
        },
        {
          "x": 283,
          "y": 256
        },
        {
          "x": 284,
          "y": 266
        },
        {
          "x": 286,
          "y": 276
        },
        {
          "x": 289,
          "y": 285
        },
        {
          "x": 294,
          "y": 294
        },
        {
          "x": 301,
          "y": 301
        },
        {
          "x": 314,
          "y": 306
        },
        {
          "x": 327,
          "y": 307
        },
        {
          "x": 340,
          "y": 306
        },
        {
          "x": 353,
          "y": 302
        },
        {
          "x": 365,
          "y": 296
        },
        {
          "x": 374,
          "y": 287
        },
        {
          "x": 382,
          "y": 276
        },
        {
          "x": 387,
          "y": 264
        },
        {
          "x": 392,
          "y": 251
        },
        {
          "x": 396,
          "y": 238
        }
      ],
      "left_eye": [
        {
          "x": 298,
          "y": 208
        },
        {
          "x": 301,
          "y": 212
        },
        {
          "x": 305,
          "y": 214
        },
        {
          "x": 309,
          "y": 215
        },
        {
          "x": 314,
          "y": 216
        },
        {
          "x": 313,
          "y": 210
        },
        {
          "x": 309,
          "y": 207
        },
        {
          "x": 303,
          "y": 206
        }
      ],
      "right_eye": [
        {
          "x": 363,
          "y": 229
        },
        {
          "x": 358,
          "y": 230
        },
        {
          "x": 353,
          "y": 229
        },
        {
          "x": 347,
          "y": 227
        },
        {
          "x": 342,
          "y": 224
        },
        {
          "x": 348,
          "y": 221
        },
        {
          "x": 354,
          "y": 221
        },
        {
          "x": 360,
          "y": 223
        }
      ],
      "left_eye_brow": [
        {
          "x": 296,
          "y": 196
        },
        {
          "x": 302,
          "y": 197
        },
        {
          "x": 308,
          "y": 198
        },
        {
          "x": 313,
          "y": 200
        },
        {
          "x": 319,
          "y": 202
        },
        {
          "x": 315,
          "y": 195
        },
        {
          "x": 309,
          "y": 192
        },
        {
          "x": 302,
          "y": 192
        }
      ],
      "right_eye_brow": [
        {
          "x": 377,
          "y": 221
        },
        {
          "x": 369,
          "y": 217
        },
        {
          "x": 360,
          "y": 213
        },
        {
          "x": 350,
          "y": 211
        },
        {
          "x": 341,
          "y": 208
        },
        {
          "x": 351,
          "y": 204
        },
        {
          "x": 362,
          "y": 206
        },
        {
          "x": 372,
          "y": 211
        }
      ],
      "mouth": [
        {
          "x": 296,
          "y": 262
        },
        {
          "x": 297,
          "y": 269
        },
        {
          "x": 299,
          "y": 276
        },
        {
          "x": 305,
          "y": 281
        },
        {
          "x": 315,
          "y": 283
        },
        {
          "x": 326,
          "y": 282
        },
        {
          "x": 335,
          "y": 277
        },
        {
          "x": 325,
          "y": 269
        },
        {
          "x": 315,
          "y": 262
        },
        {
          "x": 309,
          "y": 261
        },
        {
          "x": 305,
          "y": 258
        },
        {
          "x": 300,
          "y": 259
        },
        {
          "x": 299,
          "y": 265
        },
        {
          "x": 303,
          "y": 269
        },
        {
          "x": 307,
          "y": 272
        },
        {
          "x": 316,
          "y": 275
        },
        {
          "x": 325,
          "y": 276
        },
        {
          "x": 326,
          "y": 272
        },
        {
          "x": 317,
          "y": 269
        },
        {
          "x": 308,
          "y": 265
        },
        {
          "x": 304,
          "y": 263
        },
        {
          "x": 300,
          "y": 262
        }
      ],
      "nose": [
        {
          "x": 311,
          "y": 242
        },
        {
          "x": 325,
          "y": 220
        },
        {
          "x": 319,
          "y": 226
        },
        {
          "x": 313,
          "y": 231
        },
        {
          "x": 307,
          "y": 236
        },
        {
          "x": 302,
          "y": 243
        },
        {
          "x": 306,
          "y": 249
        },
        {
          "x": 311,
          "y": 252
        },
        {
          "x": 318,
          "y": 254
        },
        {
          "x": 329,
          "y": 253
        },
        {
          "x": 327,
          "y": 243
        },
        {
          "x": 326,
          "y": 235
        },
        {
          "x": 326,
          "y": 228
        }
      ],
      "left_pupil": [
        {
          "x": 310,
          "y": 211
        }
      ],
      "right_pupil": [
        {
          "x": 357,
          "y": 225
        }
      ]
    }
  ]
}
Podemos ver que, neste momento, obtivemos as informações relacionadas ao rosto da pessoa na imagem, incluindo a localização dos traços faciais (pontos-chave do rosto) e a versão do modelo de algoritmo utilizado para reconhecimento facial. A descrição dos campos é a seguinte:
  • image_width : largura da imagem solicitada.
  • image_height : altura da imagem solicitada.
  • face_model_version: versão do modelo de algoritmo usado para reconhecimento facial.
  • face_shape_set: informações específicas sobre a localização dos traços faciais (pontos-chave do rosto).
    • face_profile : descreve o contorno do rosto com 21 pontos.
      • x : coordenada x
      • y : coordenada y
    • left_eye : descreve o contorno do olho esquerdo com 8 pontos.
      • x : coordenada x
      • y : coordenada y
    • right_eye : descreve o contorno do olho direito com 8 pontos.
      • x : coordenada x
      • y : coordenada y
    • left_eye_brow : descreve o contorno da sobrancelha esquerda com 8 pontos.
      • x : coordenada x
      • y : coordenada y
    • right_eye_brow : descreve o contorno da sobrancelha direita com 8 pontos.
      • x : coordenada x
      • y : coordenada y
    • mouth : descreve o contorno da boca com 22 pontos.
      • x : coordenada x
      • y : coordenada y
    • nose : descreve o contorno do nariz com 13 pontos.
      • x : coordenada x
      • y : coordenada y
    • left_pupil : contorno da pupila esquerda com 1 ponto.
      • x : coordenada x
      • y : coordenada y
    • right_pupil : contorno da pupila direita com 1 ponto.
      • x : coordenada x
      • y : coordenada y
Além disso, se você quiser gerar o código correspondente para integração, pode copiá-lo diretamente, por exemplo, o código CURL é o seguinte:
curl -X POST 'https://api.acedata.cloud/face/analyze' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "image_url": "https://cdn.acedata.cloud/lrbtcn.jpg"
}'
O código de integração em Python é o seguinte:
import requests

url = "https://api.acedata.cloud/face/analyze"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "image_url": "https://cdn.acedata.cloud/lrbtcn.jpg"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)

Tratamento de Erros

Ao chamar a API, se ocorrer um erro, a API retornará o código de erro e a mensagem correspondente. Por exemplo:
  • 400 token_mismatched: Solicitação inválida, possivelmente devido a parâmetros ausentes ou inválidos.
  • 400 api_not_implemented: Solicitação inválida, possivelmente devido a parâmetros ausentes ou inválidos.
  • 401 invalid_token: Não autorizado, token de autorização inválido ou ausente.
  • 429 too_many_requests: Muitas solicitações, você excedeu o limite de taxa.
  • 500 api_error: Erro interno do servidor, algo deu errado no servidor.

Exemplo de Resposta de Erro

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusão

Através deste documento, você já entendeu como usar a API de localização de traços faciais para processar a imagem de entrada. Esperamos que este documento possa ajudá-lo a integrar e usar melhor essa API. Se tiver alguma dúvida, entre em contato com nossa equipe de suporte técnico.