Saltar para o conteúdo principal

Documentation Index

Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt

Use this file to discover all available pages before exploring further.

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.xhuoapi.ai/v1/face/analyze' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "image_url": "https://cdn.xhuoapi.ai/lrbtcn.jpg"
}'
O código de integração em Python é o seguinte:
import requests

url = "https://api.xhuoapi.ai/v1/face/analyze"

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

payload = {
    "image_url": "https://cdn.xhuoapi.ai/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.