

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Pesquisa de faces em uma coleção
<a name="collections"></a>

O Amazon Rekognition permite que você use uma face de entrada para pesquisar correspondências em uma coleção de faces armazenadas. Você começa armazenando informações sobre faces detectadas em contêineres do lado do servidor chamados "coleções". As coleções armazenam faces e usuários individuais (várias faces da mesma pessoa). Faces individuais são armazenadas como vetores faciais, uma representação matemática da face (não uma imagem real da face). Imagens diferentes da mesma pessoa podem ser usadas para criar e armazenar vários vetores faciais na mesma coleção. Em seguida, você pode agregar vários vetores de face da mesma pessoa para criar um vetor de usuário. Os vetores do usuário podem oferecer maior precisão na busca facial com representações mais robustas, contendo vários graus de iluminação, nitidez, pose, aparência etc.

Depois de criar uma coleção, você pode usar uma face de entrada para pesquisar vetores de usuário ou vetores de face correspondentes em uma coleção. Pesquisar em vetores de usuário pode melhorar significativamente a precisão em comparação com a pesquisa em vetores faciais individuais. Você pode usar faces detectadas em imagens, vídeos armazenados e vídeos em streaming para pesquisar em vetores faciais armazenados. Você pode usar faces detectadas em imagens para pesquisar em vetores de usuário armazenados.

Para armazenar informações faciais, você precisará fazer o seguinte:

1. Criar uma coleção - Para armazenar informações faciais, você deve primeiro criar ([CreateCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateCollection.html)) uma coleção facial em uma das AWS regiões da sua conta. Você especifica essa coleção de faces ao chamar a operação `IndexFaces`.

1. Index Faces - A [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html)operação detecta face (s) em uma imagem, extrai e armazena o (s) vetor (s) facial (s) na coleção. Você pode usar essa operação para detectar faces em uma imagem e manter informações sobre traços faciais detectados em uma coleção. Esse é um exemplo de operação de API *com base em armazenamento* porque o serviço armazena as informações do vetor facial no servidor.

Para criar um usuário e associar vários vetores faciais a um usuário, você precisará fazer o seguinte:

1. Criar um usuário - Você deve primeiro criar um usuário com [CreateUser](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateUser.html). Você pode melhorar a precisão da correspondência facial agregando vários vetores faciais da mesma pessoa em um vetor de usuário. Você pode associar até 100 vetores de face a um vetor de usuário. 

1. Associar faces - Depois de criar o usuário, você pode adicionar vetores de face existentes a esse usuário com a [AssociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_AssociateFaces.html)operação. Os vetores de face devem residir na mesma coleção de um vetor de usuário para serem associados a esse vetor de usuário. 

Depois de criar uma coleção e armazenar vetores faciais e de usuários, você pode usar as seguintes operações para pesquisar correspondências de faces:
+ [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html)- Para pesquisar rostos individuais armazenados com um rosto de uma imagem.
+ [SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html)- Para pesquisar rostos individuais armazenados com um ID facial fornecido.
+ [SearchUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsers.html)- Para pesquisar usuários armazenados com um ID facial ou ID de usuário fornecido.
+ [SearchUsersByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsersByImage.html)- Para pesquisar usuários armazenados com um rosto de uma imagem.
+ [StartFaceSearch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartFaceSearch.html)- Para pesquisar rostos em um vídeo armazenado.
+ [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)- Para pesquisar rostos em um streaming de vídeo.

**nota**  
As coleções armazenam vetores faciais, que são representações matemáticas de faces. As coleções não armazenam imagens de faces.

Os diagramas a seguir mostram a ordem das operações de chamada com base em suas metas de uso de coleções:

**Para obter a máxima precisão de correspondência com os vetores do usuário:**

![\[O diagrama que descreve o armazenamento e a pesquisa de vetores faciais do usuário em uma coleção lista operações como CreateCollection IndexFaces, CreateUser,, AssociateFaces SearchUsersByImage, e. SearchUsers\]](http://docs.aws.amazon.com/pt_br/rekognition/latest/dg/images/uservectorsCollection.png)


**Para uma correspondência de alta precisão com vetores faciais individuais:**

![\[O diagrama que descreve o armazenamento e a pesquisa de faces em uma coleção lista operações como CreateCollection IndexFaces, StartFaceSearch, CreateStreamProcessor, SearchFacesByImage, e. SearchFaces\]](http://docs.aws.amazon.com/pt_br/rekognition/latest/dg/images/facevectorsCollection.png)


Você pode usar coleções em vários cenários. Por exemplo, você pode criar uma coleção de rostos que armazene rostos detectados a partir de imagens digitalizadas de crachás de funcionários e emitidas IDs pelo governo usando as operações `IndexFaces` e. `AssociateFaces` Quando um funcionário entra no prédio, uma imagem da face do funcionário é capturada e enviada para a operação `SearchUsersByImage`. Se a correspondência de face produzir uma pontuação de similaridade suficientemente alta (por exemplo, 99%), você poderá autenticar o funcionário. 

# Gerenciar coleções de faces, faces e usuários
<a name="managing-face-collections"></a>

 A coleção facial é o recurso usado pelo Amazon Rekognition para conter informações relacionadas a faces e usuários. Você usa várias operações da API do Rekognition para gerenciar a coleção em si e todas as faces ou vetores faciais armazenados na coleção. 

## Gerenciar uma coleção
<a name="managing-collections"></a>

A coleção de faces é o principal recurso do Amazon Rekognition, e cada coleção de faces criada tem um nome de recurso da Amazon (ARN) exclusivo. Você cria cada coleção de rostos em uma AWS região específica da sua conta. Quando uma coleção é criada, ela é associada à versão mais recente do modelo de detecção de faces. Para obter mais informações, consulte [Noções básicas do versionamento de modelo](face-detection-model.md). 

Você pode realizar as seguintes operações de gerenciamento em uma coleção:
+ Crie uma coleção com [CreateCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateCollection.html). Para obter mais informações, consulte [Criar uma coleção](create-collection-procedure.md).
+ Liste as coleções disponíveis com [ListCollections](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListCollections.html). Para obter mais informações, consulte [Listar coleções](list-collection-procedure.md).
+ Descreva uma coleção com [DescribeCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeCollection.html). Para obter mais informações, consulte [Descrever uma coleção](describe-collection-procedure.md).
+ Exclua uma coleção com [DeleteCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteCollection.html). Para obter mais informações, consulte [Excluir uma coleção](delete-collection-procedure.md).

## Gerenciar faces em uma coleção
<a name="collections-index-faces"></a>

Depois de criar uma coleção de faces, você pode armazenar faces nela. O Amazon Rekognition fornece as seguintes operações para gerenciar faces em uma coleção:
+  A operação [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html) detecta faces na imagem de entrada (JPEG ou PNG) e a adiciona à coleção de faces especificada. Um ID exclusivo é retornado para cada face detectada na imagem. Depois de manter faces, você poderá pesquisar a coleção de faces em busca de correspondências de face. Para obter mais informações, consulte [Adicionar faces a uma coleção](add-faces-to-collection-procedure.md).
+ A operação [ListFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListFaces.html) lista as faces em uma coleção. Para obter mais informações, consulte [Adicionar faces a uma coleção](add-faces-to-collection-procedure.md).
+ A operação [DeleteFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteFaces.html) exclui faces de uma coleção. Para obter mais informações, consulte [Excluir faces de uma coleção](delete-faces-procedure.md).

## Gerenciar usuários em uma coleção
<a name="collections-manage-users"></a>

Depois de armazenar vários vetores faciais da mesma pessoa, você pode melhorar a precisão associando todos esses vetores faciais em um vetor de usuário. Você pode usar as seguintes operações para gerenciar seus usuários:
+ [CreateUser](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateUser.html)- A operação cria um novo usuário em uma coleção com um ID de usuário exclusivo fornecido.
+ [AssociateUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_AssociateUsers.html)- Adicione de 1 a 100 faces exclusivas IDs a um ID de usuário. Depois de associar pelo menos um ID facial a um usuário, você pode pesquisar correspondências com esse usuário em sua coleção.
+ [ListUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListUsers.html)- Lista os usuários em uma coleção.
+ [DeleteUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteUsers.html)- Exclui um usuário de uma coleção com o ID de usuário fornecido.
+ [DisassociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DisassociateFaces.html)- Remove um ou mais rostos IDs de um usuário.

# Usar limites de similaridade para associar e combinar rostos
<a name="thresholds-collections"></a>

Limites de similaridade são usados para associar e combinar faces. O que segue é uma orientação para o uso de limites de similaridade em ambos os casos de uso.

## Usando limites de similaridade para associar faces
<a name="thresholds-collections-associating-faces"></a>

Ao associar rostos usando a [AssociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_AssociateFaces.html)operação, é importante garantir que os rostos associados a um usuário sejam todos da mesma pessoa. Para ajudar, o parâmetro `UserMatchThreshold` especifica a confiança mínima de correspondência do usuário necessária para que a nova face seja associada a um `UserID` que já contenha pelo menos uma `FaceID`. Isso ajuda a garantir que `FaceIds` eles estejam associados ao `UserID` à direita . O valor varia de 0 a 100 e o valor padrão é 75. 

## Usar limites de similaridade para combinar faces
<a name="thresholds-face-match-similarity"></a>

Nós permitimos que você controle os resultados de todas as operações de pesquisa ([CompareFaces[SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html)](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CompareFaces.html), [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html), [SearchUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsers.html),, [SearchUsersByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsersByImage.html)) fornecendo um limite de similaridade como parâmetro de entrada.

`FaceMatchThreshold`, é o atributo de entrada do limite de similaridade para `SearchFaces` e `SearchFacesByImage`, e controla quantos resultados são retornados com base na semelhança com a face que está sendo correspondida. O atributo de limite de similaridade para `SearchUsers` e `SearchUsersByImage` é `UserMatchThreshold`, e ele controla quantos resultados são retornados com base na semelhança com o vetor do usuário que está sendo correspondido. O atributo de limite é `SimilarityThreshold` para `CompareFaces`. 

Respostas com um valor de atributo de resposta de `Similarity` que é menor do que o limite não são retornados. Esse limite é importante para calibrar para seu caso de uso, uma vez que ele pode determinar quantos falsos positivos são incluídos nos resultados de correspondência. Isso controla a recuperação dos resultados da pesquisa — quanto menor o limite, maior a recuperação. 

Todos os sistemas de aprendizagem de máquina são probabilísticos. Você deve usar seu julgamento para definir o limite de semelhança correto, dependendo de seu caso de uso. Por exemplo, se você quer criar um aplicativo para identificar fotos semelhantes procurando familiares, você pode escolher um limite inferior (por exemplo, 80%). Por outro lado, para vários casos de uso de aplicação da lei, recomendamos usar um alto valor limite de 99% ou superior para reduzir erros de identificação acidental. 

Além de `FaceMatchThreshold` e `UserMatchThreshold`, você pode usar o atributo de resposta `Similarity` como um meio de reduzir erros de identificação acidentais. Por exemplo, você pode optar por usar um limite inferior (como 80%) para retornar mais resultados. Em seguida, você pode usar o atributo de resposta Similaridade (porcentagem de similaridade) para restringir a escolha e filtrar as respostas corretas em seu aplicativo. Mais uma vez, usar uma semelhança maior (por exemplo, 99% e acima) reduz o risco de erros de identificação. 

# Orientação para indexar faces em cenários comuns
<a name="guidance-index-faces"></a>

Veja a seguir as orientações de uso do `IndexFaces` em cenários comuns.

## Aplicações críticas ou de segurança pública
<a name="guidance-index-faces-critical"></a>
+ Chame o [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html) com imagens que contêm apenas uma face cada e associe o ID de face retornado com o identificador para a pessoa presente da imagem.
+ Você pode usar o [DetectFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectFaces.html) antes da indexação para verificar se há somente uma face na imagem. Se mais de uma face for detectada, envie novamente a imagem, após revisá-la, e deixe apenas uma face presente. Isso evita a indexação não intencional de várias faces e sua associação com a mesma pessoa.

## Aplicativos de compartilhamento de fotos e mídias sociais
<a name="guidance-index-faces-social"></a>
+ Você deve usar o `IndexFaces` sem restrições em imagens que contenham várias faces, em casos de uso como álbuns de família. Nesses casos, você precisa identificar cada pessoa em cada foto e usar essas informações para agrupar fotos pelas pessoas presentes. 

## Uso geral
<a name="guidance-index-faces-general"></a>
+ Indexe várias imagens diferentes da mesma pessoa, especialmente com atributos faciais diferentes (poses faciais, pelos faciais etc.), crie um usuário e associe as diferentes faces a esse usuário para melhorar a qualidade da correspondência.
+ Inclua um processo de revisão para que as correspondências malsucedidas possam ser indexadas com o identificador da face correta para melhorar a capacidade de correspondência das faces subsequentes.
+ Para obter informações sobre a qualidade da imagem, consulte [Recomendações para imagens de entrada de comparação facial](recommendations-facial-input-images.md). 

# Pesquisa de faces e usuários em uma coleção
<a name="collections-search-faces"></a>

Depois de criar uma coleção de faces e armazenar vetores faciais (vetores de and/or usuário), você pode pesquisar uma coleção de faces por correspondências faciais. Com o Amazon Rekognition, você pode pesquisar faces em uma coleção que corresponda a:
+ Um ID de face fornecido ([SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html)). Para obter mais informações, consulte [Procurando uma face com um ID facial](search-face-with-id-procedure.md).
+ O maior face em uma imagem fornecida ([SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html)). Para obter mais informações, consulte [Procurando um rosto com uma imagem](search-face-with-image-procedure.md).
+ Faces em um vídeo armazenado. Para obter mais informações, consulte [Pesquisanda faces em vídeos armazenados](procedure-person-search-videos.md).
+ Faces em um streaming de vídeo. Para obter mais informações, consulte [Trabalhando com eventos de streaming de vídeo](streaming-video.md).

Você pode usar a operação `CompareFaces` para comparar uma face em uma imagem de origem com faces na imagem de destino. O escopo dessa comparação está limitado às faces detectadas na imagem de destino. Para obter mais informações, consulte [Comparar faces em imagens](https://docs.aws.amazon.com/rekognition/latest/dg/faces-comparefaces.html).

As várias operações de pesquisa vistas na lista a seguir comparam uma face (identificada por uma imagem de `FaceId` ou por uma imagem de entrada) com todas as faces armazenadas em uma determinada coleção de faces: 
+ [SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html)
+ [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html)
+ [SearchUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsers.html)
+ [SearchUsersByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsersByImage.html)

# Casos de uso que envolvem segurança pública
<a name="considerations-public-safety-use-cases"></a>

 Além das recomendações listadas em [Melhores práticas para sensores, imagens de entrada e vídeos](best-practices.md) e [Orientação para indexar faces em cenários comuns](guidance-index-faces.md), você deve usar as melhores práticas a seguir ao implantar sistemas de detecção e comparação facial e em casos de uso que envolvem a segurança pública. Em primeiro lugar, você deve usar limites de confiança de 99% ou superior para reduzir erros e falsos positivos. Em segundo lugar, você deve envolver revisores humanos para verificar os resultados recebidos de um sistema de detecção ou comparação facial, e não deve tomar decisões com base na saída do sistema sem uma revisão humana adicional. Os sistemas de detecção e comparação facial devem servir como uma ferramenta para ajudar a restringir o campo e permitir que pessoas revisem e analisem as opções rapidamente. Em terceiro lugar, recomendamos que você deve ser transparente sobre o uso de sistemas de detecção e comparação facial nesses casos de uso, inclusive, sempre que possível, informando os usuários finais e pessoas afetadas sobre o uso desses sistemas, obtendo seu consentimento para a utilização e fornecendo um mecanismo em que os usuários finais e pessoas afetadas possam fornecer comentários para melhorar o sistema.

 Se você for uma agência de aplicação da lei que usa o recurso de comparação facial do Amazon Rekognition em conexão com investigações criminais, deverá seguir os requisitos listados na seção [Termos de serviço da AWS](https://aws.amazon.com/service-terms/). Eles incluem o seguinte.
+ Coloque pessoas devidamente treinadas para examinar todas as decisões relativas a ações que possam afetar as liberdades civis de uma pessoa ou direitos humanos equivalentes.
+ Treine o pessoal sobre a utilização responsável dos sistemas de reconhecimento facial.
+ Divulgue publicamente o seu uso de sistemas de reconhecimento facial.
+ Não use o Amazon Rekognition para vigilância contínua de uma pessoa sem análise independente ou circunstâncias exigentes.

Em todos os casos, as correspondências da comparação facial devem ser visualizadas no contexto de outras provas convincentes, e não devem ser usadas como o único determinante para tomar alguma medida. No entanto, se a comparação facial for usada para non-law-enforcement cenários (por exemplo, para desbloquear um telefone ou autenticar a identidade de um funcionário para acessar um prédio comercial privado e seguro), essas decisões não exigiriam uma auditoria manual porque não afetariam as liberdades civis ou os direitos humanos equivalentes de uma pessoa. 

Se está planejando usar um sistema de detecção ou comparação facial para casos de uso que envolvam a segurança pública, você deve empregar as práticas recomendadas mencionadas anteriormente. Além disso, você deve consultar os recursos publicados sobre o uso da comparação facial. Isso inclui o documento [Face Recognition Policy Development Template For Use In Criminal Intelligence and Investigative Activities](https://www.bja.gov/Publications/Face-Recognition-Policy-Development-Template-508-compliant.pdf) publicado pelo Bureau of Justice Assistance do Departamento de Justiça. O modelo oferece vários recursos relacionados a comparação facial e biometria e foi criado para fornecer às agências de segurança pública e departamentos de polícia uma estrutura para o desenvolvimento de políticas de comparação facial que estejam em conformidade com as leis aplicáveis, reduzam os riscos à privacidade e estabeleçam as formas de responsabilidade e supervisão da entidade. Alguns materiais adicionais incluem [Best Privacy Practices for Commercial Use of Facial Recognition](https://www.ntia.doc.gov/files/ntia/publications/privacy_best_practices_recommendations_for_commercial_use_of_facial_recogntion.pdf) da National Telecommunications and Information Administration (Administração Nacional de Informação e Telecomunicações) e [Best Practices for Common Uses of Facial Recognition](https://www.ftc.gov/sites/default/files/documents/reports/facing-facts-best-practices-common-uses-facial-recognition-technologies/121022facialtechrpt.pdf) pelo pessoal da Federal Trade Commission (Comissão Federal de Comércio). Outros materiais podem ser desenvolvidos e publicados no futuro, e você deve se informar continuamente sobre esse tópico importante.

Lembre-se que você deve estar em conformidade com todas as leis aplicáveis ao usar os serviços da AWS, e não deve usar qualquer serviço da AWS de forma a violar direitos ou prejudicar outras pessoas. Isso significa que você não deve usar os serviços da AWS em casos de uso de segurança pública de uma forma que discrimine ilegalmente uma pessoa ou viole seus direitos individuais, sua privacidade ou suas liberdades civis. Você deve obter orientação jurídica apropriada, conforme necessário, para analisar todos os requisitos legais ou dúvidas sobre seu caso de uso. 

## Usando o Amazon Rekognition para ajudar na segurança pública
<a name="public-safety"></a>

O Amazon Rekognition pode ajudar em cenários de segurança pública e aplicação da lei, como encontrar crianças perdidas, combater o tráfico de pessoas ou prevenir crimes. Em situações legais e de segurança pública, considere o seguinte:
+ Use o Amazon Rekognition como a primeira etapa para encontrar possíveis correspondências. As respostas das operações faciais do Amazon Rekognition permitem que você obtenha rapidamente um conjunto de possíveis correspondências para análise posterior.
+ Não use as respostas do Amazon Rekognition para tomar decisões autônomas em cenários que exijam análise por um ser humano. Se você é uma agência policial que usa o Amazon Rekognition para ajudar na identificação de uma pessoa em conexão com uma investigação criminal, e ações serão tomadas com base na identificação que possa afetar as liberdades civis ou direitos humanos equivalentes dessa pessoa, a decisão de agir deve ser tomada por uma pessoa devidamente treinada com base no exame independente das evidências de identificação.
+ Use um limite de similaridade de 99% para cenários onde correspondências de similaridade de face altamente precisos são necessários. Um exemplo disso é autenticar o acesso a um edifício.
+ Quando os direitos civis forem uma preocupação, como os casos de uso envolvendo a aplicação da lei, use os limites de confiança de 99% ou acima e empregue a revisão humana das previsões de comparação facial para garantir que os direitos civis de uma pessoa não sejam violados.
+ Use um limite de similaridade inferior a 99% para cenários que se beneficiam de um conjunto maior de correspondências em potencial. Um exemplo disso é encontrar desaparecidos. Se necessário, você pode usar o atributo de resposta de similaridade de correspondências para determinar quão similar as correspondências em potencial são para a pessoa que você deseja reconhecer. 
+ Tenha um plano para falsos positivos de correspondências de faces que são retornados pelo Amazon Rekognition. Por exemplo, melhorar a correspondência usando várias imagens da mesma pessoa quando você cria o índice com a operação [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html). Para obter mais informações, consulte [Orientação para indexar faces em cenários comuns](guidance-index-faces.md).

Em outros casos de uso (como mídias sociais), recomendamos que você use seu bom senso para avaliar se os resultados do Amazon Rekognition precisam de análise humana. Além disso, dependendo dos requisitos de seu aplicativo, o limite de similaridade pode ser menor. 

# Criar uma coleção
<a name="create-collection-procedure"></a>

Você pode usar a operação [CreateCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateCollection.html) para criar uma coleção.

Para obter mais informações, consulte [Gerenciar uma coleção](managing-face-collections.md#managing-collections). 

**Para criar uma coleção (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `CreateCollection`.

------
#### [ Java ]

   O exemplo a seguir cria uma coleção e exibe o Amazon Resource Name (ARN – Nome de recurso da Amazon).

   Altere o valor de `collectionId` para o nome da coleção que você deseja criar.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.CreateCollectionRequest;
   import com.amazonaws.services.rekognition.model.CreateCollectionResult;
   
   
   public class CreateCollection {
   
      public static void main(String[] args) throws Exception {
   
   
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
         
         String collectionId = "MyCollection";
               System.out.println("Creating collection: " +
            collectionId );
               
           CreateCollectionRequest request = new CreateCollectionRequest()
                       .withCollectionId(collectionId);
              
         CreateCollectionResult createCollectionResult = rekognitionClient.createCollection(request); 
         System.out.println("CollectionArn : " +
            createCollectionResult.getCollectionArn());
         System.out.println("Status code : " +
            createCollectionResult.getStatusCode().toString());
   
      } 
   
   }
   ```

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/CreateCollection.java).

    Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   //snippet-start:[rekognition.java2.create_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.CreateCollectionResponse;
   import software.amazon.awssdk.services.rekognition.model.CreateCollectionRequest;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   //snippet-end:[rekognition.java2.create_collection.import]
   
   /**
   * Before running this Java V2 code example, set up your development environment, including your credentials.
   *
   * For more information, see the following documentation topic:
   *
   * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
   */
   public class CreateCollection {
   
    public static void main(String[] args) {
   
        final String usage = "\n" +
            "Usage: " +
            "   <collectionName> \n\n" +
            "Where:\n" +
            "   collectionName - The name of the collection. \n\n";
   
        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }
   
        String collectionId = args[0];
        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
            .region(region)
            .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
            .build();
   
        System.out.println("Creating collection: " +collectionId);
        createMyCollection(rekClient, collectionId );
        rekClient.close();
    }
   
    // snippet-start:[rekognition.java2.create_collection.main]
    public static void createMyCollection(RekognitionClient rekClient,String collectionId ) {
   
        try {
            CreateCollectionRequest collectionRequest = CreateCollectionRequest.builder()
                .collectionId(collectionId)
                .build();
   
            CreateCollectionResponse collectionResponse = rekClient.createCollection(collectionRequest);
            System.out.println("CollectionArn: " + collectionResponse.collectionArn());
            System.out.println("Status code: " + collectionResponse.statusCode().toString());
   
        } catch(RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }
    // snippet-end:[rekognition.java2.create_collection.main]
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exibe a saída JSON para a operação da `create-collection` CLI. 

   Substitua o valor de `collection-id` pelo nome da coleção que você deseja criar.

    Substitua o valor de `profile_name` com o nome do seu perfil de desenvolvedor. 

   ```
   aws rekognition create-collection --profile profile-name --collection-id "collection-name"
   ```

------
#### [ Python ]

   O exemplo a seguir cria uma coleção e exibe o Amazon Resource Name (ARN – Nome de recurso da Amazon). 

   Altere o valor de `collection_id` para o nome da coleção que você deseja criar. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def create_collection(collection_id):
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
   
       # Create a collection
       print('Creating collection:' + collection_id)
       response = client.create_collection(CollectionId=collection_id)
       print('Collection ARN: ' + response['CollectionArn'])
       print('Status code: ' + str(response['StatusCode']))
       print('Done...')
   
   def main():
       collection_id = "collection-id"
       create_collection(collection_id)
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   O exemplo a seguir cria uma coleção e exibe o Amazon Resource Name (ARN – Nome de recurso da Amazon).

   Altere o valor de `collectionId` para o nome da coleção que você deseja criar.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class CreateCollection
   {
       public static void Example()
       {
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           String collectionId = "MyCollection";
           Console.WriteLine("Creating collection: " + collectionId);
   
           CreateCollectionRequest createCollectionRequest = new CreateCollectionRequest()
           {
               CollectionId = collectionId
           };
   
           CreateCollectionResponse createCollectionResponse = rekognitionClient.CreateCollection(createCollectionRequest);
           Console.WriteLine("CollectionArn : " + createCollectionResponse.CollectionArn);
           Console.WriteLine("Status code : " + createCollectionResponse.StatusCode);
   
       }
   }
   ```

------
#### [ Node.JS ]

   No exemplo a seguir, substitua o valor de `region` pelo nome da região associada à sua conta e substitua o valor de `collectionName` com o nome desejado da sua coleção.

    Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import { CreateCollectionCommand} from  "@aws-sdk/client-rekognition";
   import  { RekognitionClient } from "@aws-sdk/client-rekognition";
   import {fromIni} from '@aws-sdk/credential-providers';
   
   // Set the AWS Region.
   const REGION = "region-name"; //e.g. "us-east-1"
   // Set the profile name
   const profileName = "profile-name"
   // Name the collection
   const collectionName = "collection-name"
   const rekogClient = new RekognitionClient({region: REGION, 
     credentials: fromIni({profile: profileName,}), 
   });
   
   const createCollection = async (collectionName) => {
       try {
          console.log(`Creating collection: ${collectionName}`)
          const data = await rekogClient.send(new CreateCollectionCommand({CollectionId: collectionName}));
          console.log("Collection ARN:")
          console.log(data.CollectionARN)
          console.log("Status Code:")
          console.log(String(data.StatusCode))
          console.log("Success.",  data);
          return data;
       } catch (err) {
         console.log("Error", err.stack);
       }
     };
   
    createCollection(collectionName)
   ```

------

## CreateCollection solicitação de operação
<a name="createcollection-request"></a>

A entrada para `CreationCollection` é o nome da coleção que você deseja criar.

```
{
    "CollectionId": "MyCollection"
}
```

## CreateCollection resposta da operação
<a name="createcollection-operation-response"></a>

O Amazon Rekognition cria a coleção e retorna o nome de recurso da Amazon (ARN) da coleção recém-criada.

```
{
   "CollectionArn": "aws:rekognition:us-east-1:acct-id:collection/examplecollection",
   "StatusCode": 200
}
```

# Aplicação de tags nas coleções
<a name="tag-collections"></a>

Você pode identificar, organizar, pesquisar e filtrar coleções do Amazon Rekognition usando tags. Cada tag é um rótulo que consiste em um valor e uma chave definida pelo usuário.

Você também pode usar tags para controlar o acesso a uma coleção usando o Identity and Access Management (IAM). Para obter mais informações, consulte [Controle do acesso aos AWS recursos usando tags de recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html).

**Topics**
+ [Adicionar tags a uma nova coleção](#add-tag-new-collection)
+ [Adicionar tags a uma coleção existente](#add-tag-existing-collection)
+ [Listar tags em uma coleção](#list-tags-collection)
+ [Excluir tags de uma coleção](#delete-tag-collection)

## Adicionar tags a uma nova coleção
<a name="add-tag-new-collection"></a>

Você pode adicionar tags a uma coleção ao criá-la usando a operação `CreateCollection`. Especifique uma ou mais tags no parâmetro `Tags` de entrada da matriz.

------
#### [ AWS CLI ]

 Substitua o valor de `profile_name` com o nome do seu perfil de desenvolvedor. 

```
aws rekognition create-collection --collection-id "collection-name" --tags "{"key1":"value1","key2":"value2"}" --profile profile-name 
```

Para dispositivos Windows:

```
aws rekognition create-collection --collection-id "collection-name" --tags "{\"key1\":\"value1\",\"key2\":\"value2\"}" --profile profile-name
```

------
#### [ Python ]

 Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

```
import boto3

def create_collection(collection_id):
    client = boto3.client('rekognition')

    # Create a collection
    print('Creating collection:' + collection_id)
    response = client.create_collection(CollectionId=collection_id)
    print('Collection ARN: ' + response['CollectionArn'])
    print('Status code: ' + str(response['StatusCode']))
    print('Done...')

def main():
    collection_id = 'NewCollectionName'
    create_collection(collection_id)

if __name__ == "__main__":
    main()
```

------

## Adicionar tags a uma coleção existente
<a name="add-tag-existing-collection"></a>

Para adicionar uma ou mais tags a uma coleção existente, use a operação `TagResource`. Especifique o nome do recurso da Amazon (ARN) (`ResourceArn`) e as tags (`Tags`) da coleção que você deseja adicionar. O exemplo a seguir mostra como adicionar duas tags.

------
#### [ AWS CLI ]

 Substitua o valor de `profile_name` com o nome do seu perfil de desenvolvedor. 

```
aws rekognition tag-resource --resource-arn collection-arn --tags "{"key1":"value1","key2":"value2"}" --profile profile-name 
```

 Para dispositivos Windows: 

```
aws rekognition tag-resource --resource-arn collection-arn --tags "{\"key1\":\"value1\",\"key2\":\"value2\"}" --profile profile-name
```

------
#### [ Python ]

 Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

```
# Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)

import boto3

def create_tag(collection_id):
    session = boto3.Session(profile_name='default')
    client = session.client('rekognition')
    response = client.tag_resource(ResourceArn=collection_id,
                                   Tags={
                                       "KeyName": "ValueName"
                                   })
    print(response)
    if "'HTTPStatusCode': 200" in str(response):
        print("Success!!")

def main():
    collection_arn = "collection-arn"
    create_tag(collection_arn)

if __name__ == "__main__":
    main()
```

------

**nota**  
Se você não souber o nome do recurso da Amazon da coleção, poderá usar a operação `DescribeCollection`.

## Listar tags em uma coleção
<a name="list-tags-collection"></a>

Para listar as tags anexadas a uma coleção, use a operação `ListTagsForResource` e especifique o ARN da coleção (`ResourceArn`). A resposta é um mapa de chaves e valores de tags anexados à coleção especificada.

------
#### [ AWS CLI ]

 Substitua o valor de `profile_name` com o nome do seu perfil de desenvolvedor. 

```
aws rekognition list-tags-for-resource --resource-arn resource-arn --profile profile-name
```

------
#### [ Python ]

 Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

```
import boto3

def list_tags():
    client = boto3.client('rekognition')
    response = client.list_tags_for_resource(ResourceArn="arn:aws:rekognition:region-name:5498347593847598:collection/NewCollectionName")
    print(response)

def main():
    list_tags()

if __name__ == "__main__":
    main()
```

------

A saída exibe uma lista de tags anexadas à coleção:

```
                {
    "Tags": {
        "Dept": "Engineering",
        "Name": "Ana Silva Carolina",
        "Role": "Developer"
    }
}
```

## Excluir tags de uma coleção
<a name="delete-tag-collection"></a>

Para remover uma ou mais tags de uma coleção, use a operação `UntagResource`. Especifique o ARN do modelo (`ResourceArn`) e das chaves de tag (`Tag-Keys`) que você deseja remover.

------
#### [ AWS CLI ]

Substitua o valor de `profile_name` com o nome do seu perfil de desenvolvedor.

```
aws rekognition untag-resource --resource-arn resource-arn --profile profile-name --tag-keys "key1" "key2"
```

Como alternativa, você pode especificar chaves de tag neste formato:

```
--tag-keys key1,key2
```

------
#### [ Python ]

 Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

```
import boto3

def list_tags():
    client = boto3.client('rekognition')
    response = client.untag_resource(ResourceArn="arn:aws:rekognition:region-name:5498347593847598:collection/NewCollectionName", TagKeys=['KeyName'])
    print(response)

def main():
    list_tags()

if __name__ == "__main__":
    main()
```

------

# Listar coleções
<a name="list-collection-procedure"></a>

Você pode usar a operação [ListCollections](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListCollections.html) para listar as coleções na região que está usando.

Para obter mais informações, consulte [Gerenciar uma coleção](managing-face-collections.md#managing-collections). 



**Para listar coleções (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `ListCollections`.

------
#### [ Java ]

   O exemplo a seguir lista as coleções na região atual.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   
   import java.util.List;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.ListCollectionsRequest;
   import com.amazonaws.services.rekognition.model.ListCollectionsResult;
   
   public class ListCollections {
   
      public static void main(String[] args) throws Exception {
   
   
         AmazonRekognition amazonRekognition = AmazonRekognitionClientBuilder.defaultClient();
    
   
         System.out.println("Listing collections");
         int limit = 10;
         ListCollectionsResult listCollectionsResult = null;
         String paginationToken = null;
         do {
            if (listCollectionsResult != null) {
               paginationToken = listCollectionsResult.getNextToken();
            }
            ListCollectionsRequest listCollectionsRequest = new ListCollectionsRequest()
                    .withMaxResults(limit)
                    .withNextToken(paginationToken);
            listCollectionsResult=amazonRekognition.listCollections(listCollectionsRequest);
            
            List < String > collectionIds = listCollectionsResult.getCollectionIds();
            for (String resultId: collectionIds) {
               System.out.println(resultId);
            }
         } while (listCollectionsResult != null && listCollectionsResult.getNextToken() !=
            null);
        
      } 
   }
   ```

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/ListCollections.java).

   ```
   //snippet-start:[rekognition.java2.list_collections.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.ListCollectionsRequest;
   import software.amazon.awssdk.services.rekognition.model.ListCollectionsResponse;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import java.util.List;
   //snippet-end:[rekognition.java2.list_collections.import]
   
   /**
   * Before running this Java V2 code example, set up your development environment, including your credentials.
   *
   * For more information, see the following documentation topic:
   *
   * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
   */
   public class ListCollections {
   
    public static void main(String[] args) {
   
        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
            .region(region)
            .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
            .build();
   
        System.out.println("Listing collections");
        listAllCollections(rekClient);
        rekClient.close();
    }
   
    // snippet-start:[rekognition.java2.list_collections.main]
    public static void listAllCollections(RekognitionClient rekClient) {
        try {
            ListCollectionsRequest listCollectionsRequest = ListCollectionsRequest.builder()
                .maxResults(10)
                .build();
   
            ListCollectionsResponse response = rekClient.listCollections(listCollectionsRequest);
            List<String> collectionIds = response.collectionIds();
            for (String resultId : collectionIds) {
                System.out.println(resultId);
            }
   
        } catch (RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }
    // snippet-end:[rekognition.java2.list_collections.main]
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exibe a saída JSON para a operação da `list-collections` CLI. Substitua o valor de `profile_name` com o nome do seu perfil de desenvolvedor. 

   ```
   aws rekognition list-collections --profile profile-name
   ```

------
#### [ Python ]

   O exemplo a seguir lista as coleções na região atual.

    Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   #Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def list_collections():
   
       max_results=2
       
       client=boto3.client('rekognition')
   
       #Display all the collections
       print('Displaying collections...')
       response=client.list_collections(MaxResults=max_results)
       collection_count=0
       done=False
       
       while done==False:
           collections=response['CollectionIds']
   
           for collection in collections:
               print (collection)
               collection_count+=1
           if 'NextToken' in response:
               nextToken=response['NextToken']
               response=client.list_collections(NextToken=nextToken,MaxResults=max_results)
               
           else:
               done=True
   
       return collection_count   
   
   def main():
   
       collection_count=list_collections()
       print("collections: " + str(collection_count))
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   O exemplo a seguir lista as coleções na região atual.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class ListCollections
   {
       public static void Example()
       {
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           Console.WriteLine("Listing collections");
           int limit = 10;
   
           ListCollectionsResponse listCollectionsResponse = null;
           String paginationToken = null;
           do
           {
               if (listCollectionsResponse != null)
                   paginationToken = listCollectionsResponse.NextToken;
   
               ListCollectionsRequest listCollectionsRequest = new ListCollectionsRequest()
               {
                   MaxResults = limit,
                   NextToken = paginationToken
               };
   
               listCollectionsResponse = rekognitionClient.ListCollections(listCollectionsRequest);
   
               foreach (String resultId in listCollectionsResponse.CollectionIds)
                   Console.WriteLine(resultId);
           } while (listCollectionsResponse != null && listCollectionsResponse.NextToken != null);
       }
   }
   ```

------
#### [ Node.js ]

    Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import { ListCollectionsCommand } from  "@aws-sdk/client-rekognition";
   import  { RekognitionClient } from "@aws-sdk/client-rekognition";
   import {fromIni} from '@aws-sdk/credential-providers';
   
   // Set the AWS Region.
   const REGION = "region-name"; //e.g. "us-east-1"
   // Set the profile name
   const profileName = "profile-name"
   // Name the collection
   const rekogClient = new RekognitionClient({region: REGION, 
     credentials: fromIni({profile: profileName,}), 
   });
   
   const listCollection = async () => {
     var max_results = 10
     console.log("Displaying collections:")
     var response = await rekogClient.send(new ListCollectionsCommand({MaxResults: max_results}))
     var collection_count = 0
     var done = false
     while (done == false){
         var collections = response.CollectionIds
         collections.forEach(collection => {
             console.log(collection)
             collection_count += 1
         });
         return collection_count
     }
   }
   
   var collect_list = await listCollection()
   console.log(collect_list)
   ```

------

## ListCollections solicitação de operação
<a name="listcollections-request"></a>

A entrada para `ListCollections` é o número máximo de coleções a serem retornadas. 

```
{
    "MaxResults": 2
}
```

Se a resposta tiver mais coleções do que as solicitadas por `MaxResults`, será retornado um token que poderá ser usado para obter o próximo conjunto de resultados, em uma chamada subsequente para `ListCollections`. Por exemplo:

```
{
    "NextToken": "MGYZLAHX1T5a....",
    "MaxResults": 2
}
```

## ListCollections resposta da operação
<a name="listcollections-operation-response"></a>

O Amazon Rekognition retorna uma matriz de coleções (`CollectionIds`). Uma matriz separada (`FaceModelVersions`) fornece a versão do modelo de face usado para analisar faces em cada coleção. Por exemplo, na resposta JSON a seguir, a coleção `MyCollection` analisa faces usando a versão 2.0 do modelo de face. A coleção `AnotherCollection` usa a versão 3.0 do modelo de face. Para obter mais informações, consulte [Noções básicas do versionamento de modelo](face-detection-model.md).

`NextToken` é o token usado para obter o próximo conjunto de resultados, em uma chamada subsequente para `ListCollections`. 

```
{
    "CollectionIds": [
        "MyCollection",
        "AnotherCollection"
    ],
    "FaceModelVersions": [
        "2.0",
        "3.0"
    ],
    "NextToken": "MGYZLAHX1T5a...."
}
```

# Descrever uma coleção
<a name="describe-collection-procedure"></a>

Você pode usar a operação [DescribeCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeCollection.html) para obter as seguintes informações sobre uma coleção: 
+ O número de faces que são indexados na coleção.
+ A versão do modelo que está sendo usado com a coleção. Para obter mais informações, consulte [Noções básicas do versionamento de modelo](face-detection-model.md).
+ O nome de recurso da Amazon (ARN) da coleção.
+ A data e a hora da criação da coleção.

**Para descrever uma coleção (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `DescribeCollection`.

------
#### [ Java ]

   Este exemplo descreve uma coleção.

   Altere o valor de `collectionId` para o ID da coleção desejada.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package com.amazonaws.samples;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DescribeCollectionRequest;
   import com.amazonaws.services.rekognition.model.DescribeCollectionResult;
   
   
   public class DescribeCollection {
   
      public static void main(String[] args) throws Exception {
   
         String collectionId = "CollectionID";
         
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
               
         System.out.println("Describing collection: " +
            collectionId );
            
               
           DescribeCollectionRequest request = new DescribeCollectionRequest()
                       .withCollectionId(collectionId);
              
         DescribeCollectionResult describeCollectionResult = rekognitionClient.describeCollection(request); 
         System.out.println("Collection Arn : " +
            describeCollectionResult.getCollectionARN());
         System.out.println("Face count : " +
            describeCollectionResult.getFaceCount().toString());
         System.out.println("Face model version : " +
            describeCollectionResult.getFaceModelVersion());
         System.out.println("Created : " +
            describeCollectionResult.getCreationTimestamp().toString());
   
      } 
   
   }
   ```

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/DescribeCollection.java).

   ```
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.DescribeCollectionRequest;
   import software.amazon.awssdk.services.rekognition.model.DescribeCollectionResponse;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   //snippet-end:[rekognition.java2.describe_collection.import]
   
   /**
   * Before running this Java V2 code example, set up your development environment, including your credentials.
   *
   * For more information, see the following documentation topic:
   *
   * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
   */
   public class DescribeCollection {
   
    public static void main(String[] args) {
   
        final String usage = "\n" +
            "Usage: " +
            "   <collectionName>\n\n" +
            "Where:\n" +
            "   collectionName - The name of the Amazon Rekognition collection. \n\n";
   
        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }
   
        String collectionName = args[0];
        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
            .region(region)
            .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
            .build();
   
        describeColl(rekClient, collectionName);
        rekClient.close();
    }
   
    // snippet-start:[rekognition.java2.describe_collection.main]
    public static void describeColl(RekognitionClient rekClient, String collectionName) {
   
        try {
            DescribeCollectionRequest describeCollectionRequest = DescribeCollectionRequest.builder()
                .collectionId(collectionName)
                .build();
   
            DescribeCollectionResponse describeCollectionResponse = rekClient.describeCollection(describeCollectionRequest);
            System.out.println("Collection Arn : " + describeCollectionResponse.collectionARN());
            System.out.println("Created : " + describeCollectionResponse.creationTimestamp().toString());
   
        } catch(RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }
    // snippet-end:[rekognition.java2.describe_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exibe a saída JSON para a operação da `describe-collection` CLI. Altere o valor de `collection-id` para o ID da coleção desejada. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   aws rekognition describe-collection --collection-id collection-name --profile profile-name
   ```

------
#### [ Python ]

   Este exemplo descreve uma coleção.

   Altere o valor de `collection_id` para o ID da coleção desejada. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   
   def describe_collection(collection_id):
   
       print('Attempting to describe collection ' + collection_id)
       
       session = boto3.Session(profile_name='default')
       client = session.client('rekognition')
       
       try:
       response = client.describe_collection(CollectionId=collection_id)
       print("Collection Arn: " + response['CollectionARN'])
       print("Face Count: " + str(response['FaceCount']))
       print("Face Model Version: " + response['FaceModelVersion'])
       print("Timestamp: " + str(response['CreationTimestamp']))
       
       except ClientError as e:
       if e.response['Error']['Code'] == 'ResourceNotFoundException':
       print('The collection ' + collection_id + ' was not found ')
       else:
       print('Error other than Not Found occurred: ' + e.response['Error']['Message'])
       print('Done...')
   
   def main():
       collection_id = 'collection-name'
       describe_collection(collection_id)
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Este exemplo descreve uma coleção.

   Altere o valor de `collectionId` para o ID da coleção desejada.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class DescribeCollection
   {
       public static void Example()
       {
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           String collectionId = "CollectionID";
           Console.WriteLine("Describing collection: " + collectionId);
   
           DescribeCollectionRequest describeCollectionRequest = new DescribeCollectionRequest()
           {
               CollectionId = collectionId
           };
   
           DescribeCollectionResponse describeCollectionResponse = rekognitionClient.DescribeCollection(describeCollectionRequest);
           Console.WriteLine("Collection ARN: " + describeCollectionResponse.CollectionARN);
           Console.WriteLine("Face count: " + describeCollectionResponse.FaceCount);
           Console.WriteLine("Face model version: " + describeCollectionResponse.FaceModelVersion);
           Console.WriteLine("Created: " + describeCollectionResponse.CreationTimestamp);
       }
   }
   ```

------
#### [ Node.js ]

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import { DescribeCollectionCommand } from  "@aws-sdk/client-rekognition";
   import  { RekognitionClient } from "@aws-sdk/client-rekognition";
   import {fromIni} from '@aws-sdk/credential-providers';
   
   // Set the AWS Region.
   const REGION = "region-name"; //e.g. "us-east-1"
   // Set the profile name
   const profileName = "profile-name"
   // Name the collection
   const rekogClient = new RekognitionClient({region: REGION, 
     credentials: fromIni({profile: profileName,}), 
   });
   
   // Name the collection
   const collection_name = "collection-name"
   
   const describeCollection = async (collectionName) => {
     try {
        console.log(`Attempting to describe collection named - ${collectionName}`)
        var response = await rekogClient.send(new DescribeCollectionCommand({CollectionId: collectionName}))
        console.log('Collection Arn:')
        console.log(response.CollectionARN)
        console.log('Face Count:')
        console.log(response.FaceCount)
        console.log('Face Model Version:')
        console.log(response.FaceModelVersion)
        console.log('Timestamp:')
        console.log(response.CreationTimestamp)
        return response; // For unit tests.
     } catch (err) {
       console.log("Error", err.stack);
     }
   };
   
   describeCollection(collection_name)
   ```

------

## DescribeCollection solicitação de operação
<a name="describe-collection-request"></a>

A entrada para `DescribeCollection` é o ID da coleção desejada, conforme mostrado no exemplo JSON a seguir. 

```
{
    "CollectionId": "MyCollection"
}
```

## DescribeCollection resposta da operação
<a name="describe-collection-operation-response"></a>

A resposta inclui: 
+ O número de faces que são indexados na coleção, `FaceCount`.
+ A versão do modelo facial que está sendo usada com a coleção, `FaceModelVersion`. Para obter mais informações, consulte [Noções básicas do versionamento de modelo](face-detection-model.md).
+ A coleção do nome de recurso da Amazon, `CollectionARN`. 
+ A data e a hora da criação da coleção, `CreationTimestamp`. O valor de `CreationTimestamp` é o número de milissegundos desde o horário Unix até a criação da coleção. O horário epoch Unix é 00:00:00 UTC (Tempo Universal Coordenado), quinta-feira, 1° de janeiro de 1970. Para obter mais informações, consulte [Hora Unix](https://en.wikipedia.org/wiki/Unix_time).

```
{
    "CollectionARN": "arn:aws:rekognition:us-east-1:nnnnnnnnnnnn:collection/MyCollection",
    "CreationTimestamp": 1.533422155042E9,
    "FaceCount": 200,
    "UserCount" : 20,
    "FaceModelVersion": "1.0"
}
```

# Excluir uma coleção
<a name="delete-collection-procedure"></a>

Você pode usar a operação [DeleteCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteCollection.html) para excluir uma coleção.

Para obter mais informações, consulte [Gerenciar uma coleção](managing-face-collections.md#managing-collections). 



**Para excluir uma coleção (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `DeleteCollection`.

------
#### [ Java ]

   Este exemplo exclui uma coleção.

   Altere o valor `collectionId` para a coleção que você deseja excluir.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DeleteCollectionRequest;
   import com.amazonaws.services.rekognition.model.DeleteCollectionResult;
   
   
   public class DeleteCollection {
   
      public static void main(String[] args) throws Exception {
   
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
         String collectionId = "MyCollection";
   
         System.out.println("Deleting collections");
         
         DeleteCollectionRequest request = new DeleteCollectionRequest()
            .withCollectionId(collectionId);
         DeleteCollectionResult deleteCollectionResult = rekognitionClient.deleteCollection(request);        
     
         System.out.println(collectionId + ": " + deleteCollectionResult.getStatusCode()
            .toString());
   
      } 
   
   }
   ```

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/DeleteCollection.java).

   ```
   // snippet-start:[rekognition.java2.delete_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.DeleteCollectionRequest;
   import software.amazon.awssdk.services.rekognition.model.DeleteCollectionResponse;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   // snippet-end:[rekognition.java2.delete_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class DeleteCollection {
   
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId> \n\n" +
               "Where:\n" +
               "   collectionId - The id of the collection to delete. \n\n";
   
           if (args.length != 1) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Deleting collection: " + collectionId);
           deleteMyCollection(rekClient, collectionId);
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.delete_collection.main]
       public static void deleteMyCollection(RekognitionClient rekClient,String collectionId ) {
   
           try {
               DeleteCollectionRequest deleteCollectionRequest = DeleteCollectionRequest.builder()
                   .collectionId(collectionId)
                   .build();
   
               DeleteCollectionResponse deleteCollectionResponse = rekClient.deleteCollection(deleteCollectionRequest);
               System.out.println(collectionId + ": " + deleteCollectionResponse.statusCode().toString());
   
           } catch(RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
       // snippet-end:[rekognition.java2.delete_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exibe a saída JSON para a operação da `delete-collection` CLI. Substitua o valor de `collection-id` pelo nome da coleção que você deseja excluir. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor.

   ```
   aws rekognition delete-collection --collection-id collection-name --profile profile-name
   ```

------
#### [ Python ]

   Este exemplo exclui uma coleção.

   Altere o valor `collection_id` para a coleção que você deseja excluir. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   
   def delete_collection(collection_id):
   
       print('Attempting to delete collection ' + collection_id)
       session = boto3.Session(profile_name='default')
       client = session.client('rekognition')
   
       status_code = 0
   
       try:
           response = client.delete_collection(CollectionId=collection_id)
           status_code = response['StatusCode']
   
       except ClientError as e:
           if e.response['Error']['Code'] == 'ResourceNotFoundException':
               print('The collection ' + collection_id + ' was not found ')
           else:
               print('Error other than Not Found occurred: ' + e.response['Error']['Message'])
           status_code = e.response['ResponseMetadata']['HTTPStatusCode']
       return (status_code)
   
   def main():
   
       collection_id = 'collection-name'
       status_code = delete_collection(collection_id)
       print('Status code: ' + str(status_code))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Este exemplo exclui uma coleção.

   Altere o valor `collectionId` para a coleção que você deseja excluir.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class DeleteCollection
   {
       public static void Example()
       {
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           String collectionId = "MyCollection";
           Console.WriteLine("Deleting collection: " + collectionId);
   
           DeleteCollectionRequest deleteCollectionRequest = new DeleteCollectionRequest()
           {
               CollectionId = collectionId
           };
   
           DeleteCollectionResponse deleteCollectionResponse = rekognitionClient.DeleteCollection(deleteCollectionRequest);
           Console.WriteLine(collectionId + ": " + deleteCollectionResponse.StatusCode);
       }
   }
   ```

------
#### [ Node.js ]

    Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import { DeleteCollectionCommand } from  "@aws-sdk/client-rekognition";
   import  { RekognitionClient } from "@aws-sdk/client-rekognition";
   import {fromIni} from '@aws-sdk/credential-providers';
   
   // Set the AWS Region.
   const REGION = "region-name"; //e.g. "us-east-1"
   // Set the profile name
   const profileName = "profile-name"
   // Name the collection
   const rekogClient = new RekognitionClient({region: REGION, 
     credentials: fromIni({profile: profileName,}), 
   });
   
   // Name the collection
   const collection_name = "collection-name"
   
   const deleteCollection = async (collectionName) => {
       try {
          console.log(`Attempting to delete collection named - ${collectionName}`)
          var response = await rekogClient.send(new DeleteCollectionCommand({CollectionId: collectionName}))
          var status_code = response.StatusCode
          if (status_code = 200){
              console.log("Collection successfully deleted.")
          }
          return response; // For unit tests.
       } catch (err) {
         console.log("Error", err.stack);
       }
     };
   
   deleteCollection(collection_name)
   ```

------

## DeleteCollection solicitação de operação
<a name="deletecollection-request"></a>

A entrada para `DeleteCollection` é o ID da coleção a ser excluída, conforme mostrado no exemplo JSON a seguir. 

```
{
    "CollectionId": "MyCollection"
}
```

## DeleteCollection resposta da operação
<a name="deletecollection-operation-response"></a>

A resposta `DeleteCollection` contém um código de status HTTP que indica o sucesso ou falha da operação. `200` é retornado se a coleção for excluída com êxito.

```
{"StatusCode":200}
```

# Adicionar faces a uma coleção
<a name="add-faces-to-collection-procedure"></a>

Você pode usar a operação [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html) para detectar faces em uma imagem e adicioná-las a uma coleção. Para cada face detectada, o Amazon Rekognition extrai características faciais e armazena as informações das características em um banco de dados. Além disso, o comando armazena metadados para cada face detectada na coleção de faces especificada. O Amazon Rekognition não armazena os bytes reais da imagem.

Para obter informações sobre como fornecer faces adequadas para a indexação, consulte [Recomendações para imagens de entrada de comparação facial](recommendations-facial-input-images.md).

Para cada face, a operação `IndexFaces` mantém as seguintes informações:
+ **Características faciais multidimensionais**: `IndexFaces` usa a análise facial para extrair informações multidimensionais sobre as características faciais e armazena as informações na coleção facial. Você não pode acessar essas informações diretamente. No entanto, o Amazon Rekognition usa essas informações ao pesquisar correspondências faciais em uma coleção de faces.

   
+ **Metadados** — Os metadados de cada face incluem uma caixa delimitadora, um nível de confiança (que a caixa delimitadora contém uma face), atribuído pelo IDs Amazon Rekognition (ID facial e ID da imagem) e uma ID de imagem externa (se você a forneceu) na solicitação. Essas informações são retornadas para você em resposta para a chamada à API `IndexFaces`. Para obter um exemplo, consulte o elemento `face` na resposta de exemplo a seguir.

  O serviço retorna esses metadados em resposta para as seguintes chamadas à API:

   
  +  `[ListFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListFaces.html)` 
  + Pesquisar operações de faces – As respostas para [SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html) e [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html) retornam a confiança na correspondência de cada face, além desses metadados da face correspondente.

O número de faces indexadas por `IndexFaces` depende da versão do modelo de detecção de faces associado à coleção de entrada. Para obter mais informações, consulte [Noções básicas do versionamento de modelo](face-detection-model.md). 

As informações sobre faces indexadas são retornadas em uma matriz de objetos [FaceRecord](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_FaceRecord.html).

Você pode desejar associar faces indexadas com a imagem em que foram detectadas. Por exemplo, você pode desejar manter um índice de cliente de imagens e faces nas imagens. Para associar faces a uma imagem, especifique um ID de imagem no parâmetro da solicitação `ExternalImageId`. O ID da imagem pode ser o nome do arquivo ou outro ID que você criar.

Além das informações anteriores que a API mantém na coleção de faces, a API também retorna detalhes da face que não são mantidos na coleção. (Consulte o elemento `faceDetail` na resposta de exemplo a seguir.) 

**nota**  
O `DetectFaces` retorna as mesmas informações, portanto, você não precisa chamar `DetectFaces` e `IndexFaces` para a mesma imagem. 

## Filtrar faces
<a name="index-faces-filtering"></a>

A IndexFaces operação permite filtrar as faces indexadas a partir de uma imagem. Com `IndexFaces`, você pode especificar um número máximo de faces a serem indexadas ou pode escolher apenas faces detectadas com um índice de alta qualidade. 

Você pode especificar o número máximo de faces que são indexadas por `IndexFaces` usando o parâmetro de entrada `MaxFaces`. Isso é útil quando você deseja indexar as maiores faces em uma imagem e não deseja indexar as faces menores, como as faces de pessoas em segundo plano.

Por padrão, `IndexFaces` escolhe um requisito de qualidade que é usado para filtrar faces. É possível usar o parâmetro de entrada `QualityFilter` para definir explicitamente o requisito de qualidade. Os valores são:
+ `AUTO` — O Amazon Rekognition escolhe a barra de qualidade usada para filtrar as faces (valor padrão).
+ `LOW` — Todas, exceto as faces de menor qualidade, são indexadas.
+ `MEDIUM`
+ `HIGH` — Somente as faces da mais alta qualidade são indexadas.
+ `NONE` – nenhuma face é filtrada com base na qualidade.

`IndexFaces` filtra faces pelos seguintes motivos:
+ A face é muito pequena em comparação com as dimensões da imagem.
+ A face está muito embaçada.
+ A imagem é muito escura.
+ A face tem uma pose radical.
+ A face não tem detalhes suficientes para ser adequada à pesquisa de faces.

**nota**  
Para usar a filtragem de qualidade, é necessário ter uma coleção associada à versão 3, ou posterior, do modelo de faces. Para obter a versão do modelo de face associado a uma coleção, chame [DescribeCollection](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeCollection.html). 

As informações sobre faces que não estão indexadas por `IndexFaces` são retornadas em uma matriz de objetos do [UnindexedFace](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_UnindexedFace.html). A matriz de `Reasons` contém uma lista dos motivos pelos quais uma face não é indexada. Por exemplo, um valor de `EXCEEDS_MAX_FACES` é uma face que não foi indexada porque o número de faces especificado pelo `MaxFaces` já foi detectado. 

Para obter mais informações, consulte [Gerenciar faces em uma coleção](managing-face-collections.md#collections-index-faces). 



**Para adicionar faces a uma coleção (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess` e `AmazonS3ReadOnlyAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Faça upload de uma imagem (contendo uma ou mais faces) para seu bucket do Amazon S3. 

   Para obter instruções, consulte [Como fazer upload de objetos no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UploadingObjectsintoAmazonS3.html) no *Guia do usuário do Amazon Simple Storage Service*.

1. Use os exemplos a seguir para chamar a operação `IndexFaces`.

------
#### [ Java ]

   Este exemplo exibe os identificadores para faces adicionadas à coleção.

   Altere o valor de `collectionId` para o nome da coleção a que você deseja adicionar uma face. Substitua os valores de `bucket` e `photo` pelos nomes do bucket do Amazon S3 e da imagem usados na etapa 2. O parâmetro `.withMaxFaces(1)` restringe o número de faces indexadas a 1. Remova ou altere seu valor para atender às suas necessidades.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.FaceRecord;
   import com.amazonaws.services.rekognition.model.Image;
   import com.amazonaws.services.rekognition.model.IndexFacesRequest;
   import com.amazonaws.services.rekognition.model.IndexFacesResult;
   import com.amazonaws.services.rekognition.model.QualityFilter;
   import com.amazonaws.services.rekognition.model.S3Object;
   import com.amazonaws.services.rekognition.model.UnindexedFace;
   import java.util.List;
   
   public class AddFacesToCollection {
       public static final String collectionId = "MyCollection";
       public static final String bucket = "bucket";
       public static final String photo = "input.jpg";
   
       public static void main(String[] args) throws Exception {
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           Image image = new Image()
                   .withS3Object(new S3Object()
                   .withBucket(bucket)
                   .withName(photo));
           
           IndexFacesRequest indexFacesRequest = new IndexFacesRequest()
                   .withImage(image)
                   .withQualityFilter(QualityFilter.AUTO)
                   .withMaxFaces(1)
                   .withCollectionId(collectionId)
                   .withExternalImageId(photo)
                   .withDetectionAttributes("DEFAULT");
   
           IndexFacesResult indexFacesResult = rekognitionClient.indexFaces(indexFacesRequest);
           
           System.out.println("Results for " + photo);
           System.out.println("Faces indexed:");
           List<FaceRecord> faceRecords = indexFacesResult.getFaceRecords();
           for (FaceRecord faceRecord : faceRecords) {
               System.out.println("  Face ID: " + faceRecord.getFace().getFaceId());
               System.out.println("  Location:" + faceRecord.getFaceDetail().getBoundingBox().toString());
           }
           
           List<UnindexedFace> unindexedFaces = indexFacesResult.getUnindexedFaces();
           System.out.println("Faces not indexed:");
           for (UnindexedFace unindexedFace : unindexedFaces) {
               System.out.println("  Location:" + unindexedFace.getFaceDetail().getBoundingBox().toString());
               System.out.println("  Reasons:");
               for (String reason : unindexedFace.getReasons()) {
                   System.out.println("   " + reason);
               }
           }
       }
   }
   ```

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/AddFacesToCollection.java).

   ```
   //snippet-start:[rekognition.java2.add_faces_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.core.SdkBytes;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.IndexFacesResponse;
   import software.amazon.awssdk.services.rekognition.model.IndexFacesRequest;
   import software.amazon.awssdk.services.rekognition.model.Image;
   import software.amazon.awssdk.services.rekognition.model.QualityFilter;
   import software.amazon.awssdk.services.rekognition.model.Attribute;
   import software.amazon.awssdk.services.rekognition.model.FaceRecord;
   import software.amazon.awssdk.services.rekognition.model.UnindexedFace;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import software.amazon.awssdk.services.rekognition.model.Reason;
   import java.io.FileInputStream;
   import java.io.FileNotFoundException;
   import java.io.InputStream;
   import java.util.List;
   //snippet-end:[rekognition.java2.add_faces_collection.import]
   
   /**
   * Before running this Java V2 code example, set up your development environment, including your credentials.
   *
   * For more information, see the following documentation topic:
   *
   * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
   */
   public class AddFacesToCollection {
   
    public static void main(String[] args) {
   
        final String usage = "\n" +
            "Usage: " +
            "    <collectionId> <sourceImage>\n\n" +
            "Where:\n" +
            "    collectionName - The name of the collection.\n" +
            "    sourceImage - The path to the image (for example, C:\\AWS\\pic1.png). \n\n";
   
        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }
   
        String collectionId = args[0];
        String sourceImage = args[1];
        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
            .region(region)
            .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
            .build();
   
        addToCollection(rekClient, collectionId, sourceImage);
        rekClient.close();
    }
   
    // snippet-start:[rekognition.java2.add_faces_collection.main]
    public static void addToCollection(RekognitionClient rekClient, String collectionId, String sourceImage) {
   
        try {
            InputStream sourceStream = new FileInputStream(sourceImage);
            SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream);
            Image souImage = Image.builder()
                .bytes(sourceBytes)
                .build();
   
            IndexFacesRequest facesRequest = IndexFacesRequest.builder()
                .collectionId(collectionId)
                .image(souImage)
                .maxFaces(1)
                .qualityFilter(QualityFilter.AUTO)
                .detectionAttributes(Attribute.DEFAULT)
                .build();
   
            IndexFacesResponse facesResponse = rekClient.indexFaces(facesRequest);
            System.out.println("Results for the image");
            System.out.println("\n Faces indexed:");
            List<FaceRecord> faceRecords = facesResponse.faceRecords();
            for (FaceRecord faceRecord : faceRecords) {
                System.out.println("  Face ID: " + faceRecord.face().faceId());
                System.out.println("  Location:" + faceRecord.faceDetail().boundingBox().toString());
            }
   
            List<UnindexedFace> unindexedFaces = facesResponse.unindexedFaces();
            System.out.println("Faces not indexed:");
            for (UnindexedFace unindexedFace : unindexedFaces) {
                System.out.println("  Location:" + unindexedFace.faceDetail().boundingBox().toString());
                System.out.println("  Reasons:");
                for (Reason reason : unindexedFace.reasons()) {
                    System.out.println("Reason:  " + reason);
                }
            }
   
        } catch (RekognitionException | FileNotFoundException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }
    // snippet-end:[rekognition.java2.add_faces_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exibe a saída JSON para a operação da `index-faces` CLI. 

   Substitua o valor de `collection-id` pelo nome da coleção em que você deseja que a face seja armazenada. Substitua os valores de `Bucket` e `Name` pelo bucket do Amazon S3 e pelo arquivo de imagem que você usou na etapa 2. O parâmetro `max-faces` restringe o número de faces indexadas a 1. Remova ou altere seu valor para atender às suas necessidades. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor.

   ```
   aws rekognition index-faces --image '{"S3Object":{"Bucket":"bucket-name","Name":"file-name"}}' --collection-id "collection-id" \
                                   --max-faces 1 --quality-filter "AUTO" --detection-attributes "ALL" \ 
                                   --external-image-id "example-image.jpg" --profile profile-name
   ```

    Se você estiver acessando a CLI em um dispositivo Windows, use aspas duplas em vez de aspas simples e escape das aspas duplas internas com barra invertida (ou seja, \$1) para resolver quaisquer erros de analisador que você possa encontrar. Para obter um exemplo, veja o seguinte: 

   ```
   aws rekognition index-faces --image "{\"S3Object\":{\"Bucket\":\"bucket-name\",\"Name\":\"image-name\"}}" \
   --collection-id "collection-id" --max-faces 1 --quality-filter "AUTO" --detection-attributes "ALL" \ 
   --external-image-id "example-image.jpg" --profile profile-name
   ```

------
#### [ Python ]

   Este exemplo exibe os identificadores para faces adicionadas à coleção.

   Altere o valor de `collectionId` para o nome da coleção a que você deseja adicionar uma face. Substitua os valores de `bucket` e `photo` pelos nomes do bucket do Amazon S3 e da imagem usados na etapa 2. O parâmetro de entrada `MaxFaces` restringe o número de faces indexadas a 1. Remova ou altere seu valor para atender às suas necessidades. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def add_faces_to_collection(bucket, photo, collection_id):
   
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
   
       response = client.index_faces(CollectionId=collection_id,
                                     Image={'S3Object': {'Bucket': bucket, 'Name': photo}},
                                     ExternalImageId=photo,
                                     MaxFaces=1,
                                     QualityFilter="AUTO",
                                     DetectionAttributes=['ALL'])
   
       print('Results for ' + photo)
       print('Faces indexed:')
       for faceRecord in response['FaceRecords']:
           print('  Face ID: ' + faceRecord['Face']['FaceId'])
           print('  Location: {}'.format(faceRecord['Face']['BoundingBox']))
   
       print('Faces not indexed:')
       for unindexedFace in response['UnindexedFaces']:
           print(' Location: {}'.format(unindexedFace['FaceDetail']['BoundingBox']))
           print(' Reasons:')
           for reason in unindexedFace['Reasons']:
               print('   ' + reason)
       return len(response['FaceRecords'])
   
   def main():
       bucket = 'amzn-s3-demo-bucket'
       collection_id = 'collection-id'
       photo = 'photo-name'
   
       indexed_faces_count = add_faces_to_collection(bucket, photo, collection_id)
       print("Faces indexed count: " + str(indexed_faces_count))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Este exemplo exibe os identificadores para faces adicionadas à coleção.

   Altere o valor de `collectionId` para o nome da coleção a que você deseja adicionar uma face. Substitua os valores de `bucket` e `photo` pelos nomes do bucket do Amazon S3 e da imagem usados na etapa 2. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using System.Collections.Generic;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class AddFaces
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
           String bucket = "amzn-s3-demo-bucket";
           String photo = "input.jpg";
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           Image image = new Image()
           {
               S3Object = new S3Object()
               {
                   Bucket = bucket,
                   Name = photo
               }
           };
   
           IndexFacesRequest indexFacesRequest = new IndexFacesRequest()
           {
               Image = image,
               CollectionId = collectionId,
               ExternalImageId = photo,
               DetectionAttributes = new List<String>(){ "ALL" }
           };
   
           IndexFacesResponse indexFacesResponse = rekognitionClient.IndexFaces(indexFacesRequest);
   
           Console.WriteLine(photo + " added");
           foreach (FaceRecord faceRecord in indexFacesResponse.FaceRecords)
               Console.WriteLine("Face detected: Faceid is " +
                  faceRecord.Face.FaceId);
       }
   }
   ```

------

## IndexFaces solicitação de operação
<a name="indexfaces-request"></a>

A entrada para `IndexFaces` é a imagem a ser indexada e a coleção à qual adicionar a face ou as faces. 

```
{
    "CollectionId": "MyCollection",
    "Image": {
        "S3Object": {
            "Bucket": "bucket",
            "Name": "input.jpg"
        }
    },
    "ExternalImageId": "input.jpg",
    "DetectionAttributes": [
        "DEFAULT"
    ],
    "MaxFaces": 1,
    "QualityFilter": "AUTO"
}
```

## IndexFaces resposta da operação
<a name="indexfaces-operation-response"></a>

`IndexFaces` retorna informações sobre as faces que foram detectadas na imagem. Por exemplo, a resposta JSON a seguir inclui os atributos de detecção padrão para faces detectadas na imagem de entrada. O exemplo também mostra faces não indexadas porque o valor `MaxFaces` do parâmetro de entrada foi excedido — a matriz `Reasons` contém *EXCEEDS\$1MAX\$1FACES*. Se uma face não for indexada por motivos de qualidade, `Reasons` conterá valores como *LOW\$1SHARPNESS* ou *LOW\$1BRIGHTNESS*. Para obter mais informações, consulte [UnindexedFace](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_UnindexedFace.html).

```
{
    "FaceModelVersion": "3.0",
    "FaceRecords": [
        {
            "Face": {
                "BoundingBox": {
                    "Height": 0.3247932195663452,
                    "Left": 0.5055555701255798,
                    "Top": 0.2743072211742401,
                    "Width": 0.21444444358348846
                },
                "Confidence": 99.99998474121094,
                "ExternalImageId": "input.jpg",
                "FaceId": "b86e2392-9da1-459b-af68-49118dc16f87",
                "ImageId": "09f43d92-02b6-5cea-8fbd-9f187db2050d"
            },
            "FaceDetail": {
                "BoundingBox": {
                    "Height": 0.3247932195663452,
                    "Left": 0.5055555701255798,
                    "Top": 0.2743072211742401,
                    "Width": 0.21444444358348846
                },
                "Confidence": 99.99998474121094,
                "Landmarks": [
                    {
                        "Type": "eyeLeft",
                        "X": 0.5751981735229492,
                        "Y": 0.4010535478591919
                    },
                    {
                        "Type": "eyeRight",
                        "X": 0.6511467099189758,
                        "Y": 0.4017036259174347
                    },
                    {
                        "Type": "nose",
                        "X": 0.6314528584480286,
                        "Y": 0.4710812568664551
                    },
                    {
                        "Type": "mouthLeft",
                        "X": 0.5879443287849426,
                        "Y": 0.5171778798103333
                    },
                    {
                        "Type": "mouthRight",
                        "X": 0.6444502472877502,
                        "Y": 0.5164633989334106
                    }
                ],
                "Pose": {
                    "Pitch": -10.313642501831055,
                    "Roll": -1.0316886901855469,
                    "Yaw": 18.079818725585938
                },
                "Quality": {
                    "Brightness": 71.2919921875,
                    "Sharpness": 78.74752044677734
                }
            }
        }
    ],
    "OrientationCorrection": "",
    "UnindexedFaces": [
        {
            "FaceDetail": {
                "BoundingBox": {
                    "Height": 0.1329464465379715,
                    "Left": 0.5611110925674438,
                    "Top": 0.6832437515258789,
                    "Width": 0.08777777850627899
                },
                "Confidence": 92.37225341796875,
                "Landmarks": [
                    {
                        "Type": "eyeLeft",
                        "X": 0.5796897411346436,
                        "Y": 0.7452847957611084
                    },
                    {
                        "Type": "eyeRight",
                        "X": 0.6078574657440186,
                        "Y": 0.742687463760376
                    },
                    {
                        "Type": "nose",
                        "X": 0.597953200340271,
                        "Y": 0.7620673179626465
                    },
                    {
                        "Type": "mouthLeft",
                        "X": 0.5884202122688293,
                        "Y": 0.7920381426811218
                    },
                    {
                        "Type": "mouthRight",
                        "X": 0.60627681016922,
                        "Y": 0.7919750809669495
                    }
                ],
                "Pose": {
                    "Pitch": 15.658954620361328,
                    "Roll": -4.583454608917236,
                    "Yaw": 10.558992385864258
                },
                "Quality": {
                    "Brightness": 42.54612350463867,
                    "Sharpness": 86.93206024169922
                }
            },
            "Reasons": [
                "EXCEEDS_MAX_FACES"
            ]
        }
    ]
}
```

Para obter todas as informações faciais, especifique 'ALL' para o parâmetro de solicitação `DetectionAttributes`. Por exemplo, na resposta do exemplo a seguir, observe as informações adicionais no elemento `faceDetail`, que não é mantido no servidor:
+ 25 pontos de referência faciais (em comparação com apenas cinco no exemplo anterior)
+ Dez atributos faciais (óculos, barba, oclusão, direção do olhar e assim por diante) 
+ Emoções (consulte o elemento `emotion`)

O elemento `face` fornece metadados que são mantidos no servidor.

 `FaceModelVersion` é a versão do modelo de face associado à coleção. Para obter mais informações, consulte [Noções básicas do versionamento de modelo](face-detection-model.md).

`OrientationCorrection` é a orientação estimada da imagem. As informações de correção de orientação não serão retornadas se você estiver usando uma versão do modelo de detecção facial que seja superior à versão 3. Para obter mais informações, consulte [Obter a orientação e as coordenadas da caixa delimitadora da imagem](images-orientation.md).

O exemplo de resposta a seguir mostra o JSON retornado ao especificar ["ALL"]:

```
{
    "FaceModelVersion": "3.0",
    "FaceRecords": [
        {
            "Face": {
                "BoundingBox": {
                    "Height": 0.06333333253860474,
                    "Left": 0.17185185849666595,
                    "Top": 0.7366666793823242,
                    "Width": 0.11061728745698929
                },
                "Confidence": 99.99999237060547,
                "ExternalImageId": "input.jpg",
                "FaceId": "578e2e1b-d0b0-493c-aa39-ba476a421a34",
                "ImageId": "9ba38e68-35b6-5509-9d2e-fcffa75d1653"
            },
            "FaceDetail": {
                "AgeRange": {
                    "High": 25,
                    "Low": 15
                },
                "Beard": {
                    "Confidence": 99.98077392578125,
                    "Value": false
                },
                "BoundingBox": {
                    "Height": 0.06333333253860474,
                    "Left": 0.17185185849666595,
                    "Top": 0.7366666793823242,
                    "Width": 0.11061728745698929
                },
                "Confidence": 99.99999237060547,
                "Emotions": [
                    {
                        "Confidence": 95.40877532958984,
                        "Type": "HAPPY"
                    },
                    {
                        "Confidence": 6.6088080406188965,
                        "Type": "CALM"
                    },
                    {
                        "Confidence": 0.7385611534118652,
                        "Type": "SAD"
                    }
                ],
                 "EyeDirection": {
                    "yaw": 16.299732,
                    "pitch": -6.407457,
                    "confidence": 99.968704
                              }
                "Eyeglasses": {
                    "Confidence": 99.96795654296875,
                    "Value": false
                },
                "EyesOpen": {
                    "Confidence": 64.0671157836914,
                    "Value": true
                },
                "Gender": {
                    "Confidence": 100,
                    "Value": "Female"
                },
                "Landmarks": [
                    {
                        "Type": "eyeLeft",
                        "X": 0.21361233294010162,
                        "Y": 0.757106363773346
                    },
                    {
                        "Type": "eyeRight",
                        "X": 0.2518567442893982,
                        "Y": 0.7599404454231262
                    },
                    {
                        "Type": "nose",
                        "X": 0.2262365221977234,
                        "Y": 0.7711842060089111
                    },
                    {
                        "Type": "mouthLeft",
                        "X": 0.2050037682056427,
                        "Y": 0.7801263332366943
                    },
                    {
                        "Type": "mouthRight",
                        "X": 0.2430567592382431,
                        "Y": 0.7836716771125793
                    },
                    {
                        "Type": "leftPupil",
                        "X": 0.2161938101053238,
                        "Y": 0.756662905216217
                    },
                    {
                        "Type": "rightPupil",
                        "X": 0.2523181438446045,
                        "Y": 0.7603650689125061
                    },
                    {
                        "Type": "leftEyeBrowLeft",
                        "X": 0.20066319406032562,
                        "Y": 0.7501518130302429
                    },
                    {
                        "Type": "leftEyeBrowUp",
                        "X": 0.2130996286869049,
                        "Y": 0.7480520606040955
                    },
                    {
                        "Type": "leftEyeBrowRight",
                        "X": 0.22584207355976105,
                        "Y": 0.7504606246948242
                    },
                    {
                        "Type": "rightEyeBrowLeft",
                        "X": 0.24509544670581818,
                        "Y": 0.7526801824569702
                    },
                    {
                        "Type": "rightEyeBrowUp",
                        "X": 0.2582615911960602,
                        "Y": 0.7516844868659973
                    },
                    {
                        "Type": "rightEyeBrowRight",
                        "X": 0.26881539821624756,
                        "Y": 0.7554477453231812
                    },
                    {
                        "Type": "leftEyeLeft",
                        "X": 0.20624476671218872,
                        "Y": 0.7568746209144592
                    },
                    {
                        "Type": "leftEyeRight",
                        "X": 0.22105035185813904,
                        "Y": 0.7582521438598633
                    },
                    {
                        "Type": "leftEyeUp",
                        "X": 0.21401576697826385,
                        "Y": 0.7553104162216187
                    },
                    {
                        "Type": "leftEyeDown",
                        "X": 0.21317370235919952,
                        "Y": 0.7584449648857117
                    },
                    {
                        "Type": "rightEyeLeft",
                        "X": 0.24393919110298157,
                        "Y": 0.7600628137588501
                    },
                    {
                        "Type": "rightEyeRight",
                        "X": 0.2598416209220886,
                        "Y": 0.7605880498886108
                    },
                    {
                        "Type": "rightEyeUp",
                        "X": 0.2519053518772125,
                        "Y": 0.7582084536552429
                    },
                    {
                        "Type": "rightEyeDown",
                        "X": 0.25177454948425293,
                        "Y": 0.7612871527671814
                    },
                    {
                        "Type": "noseLeft",
                        "X": 0.2185886949300766,
                        "Y": 0.774715781211853
                    },
                    {
                        "Type": "noseRight",
                        "X": 0.23328955471515656,
                        "Y": 0.7759330868721008
                    },
                    {
                        "Type": "mouthUp",
                        "X": 0.22446128726005554,
                        "Y": 0.7805567383766174
                    },
                    {
                        "Type": "mouthDown",
                        "X": 0.22087252140045166,
                        "Y": 0.7891407608985901
                    }
                ],
                "MouthOpen": {
                    "Confidence": 95.87068939208984,
                    "Value": false
                },
                "Mustache": {
                    "Confidence": 99.9828109741211,
                    "Value": false
                },
                "Pose": {
                    "Pitch": -0.9409101605415344,
                    "Roll": 7.233824253082275,
                    "Yaw": -2.3602254390716553
                },
                "Quality": {
                    "Brightness": 32.01998519897461,
                    "Sharpness": 93.67259216308594
                },
                "Smile": {
                    "Confidence": 86.7142105102539,
                    "Value": true
                },
                "Sunglasses": {
                    "Confidence": 97.38925170898438,
                    "Value": false
                }
            }
        }
    ],
    "OrientationCorrection": "ROTATE_0"
    "UnindexedFaces": []
}
```

# Listanda faces e usuários associados em uma coleção
<a name="list-faces-in-collection-procedure"></a>

Você pode usar a [ListFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListFaces.html)operação para listar faces e seus usuários associados em uma coleção.

Para obter mais informações, consulte [Gerenciar faces em uma coleção](managing-face-collections.md#collections-index-faces). 



**Para listar faces em uma coleção (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `ListFaces`.

------
#### [ Java ]

   Este exemplo exibe uma lista de faces em uma coleção.

   Altere o valor de `collectionId` para a coleção desejada.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.Face;
   import com.amazonaws.services.rekognition.model.ListFacesRequest;
   import com.amazonaws.services.rekognition.model.ListFacesResult;
   import java.util.List;
   import com.fasterxml.jackson.databind.ObjectMapper;
   
   
   
   public class ListFacesInCollection {
       public static final String collectionId = "MyCollection";
   
      public static void main(String[] args) throws Exception {
         
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
         ObjectMapper objectMapper = new ObjectMapper();
   
         ListFacesResult listFacesResult = null;
         System.out.println("Faces in collection " + collectionId);
   
         String paginationToken = null;
         do {
            if (listFacesResult != null) {
               paginationToken = listFacesResult.getNextToken();
            }
            
            ListFacesRequest listFacesRequest = new ListFacesRequest()
                    .withCollectionId(collectionId)
                    .withMaxResults(1)
                    .withNextToken(paginationToken);
           
            listFacesResult =  rekognitionClient.listFaces(listFacesRequest);
            List < Face > faces = listFacesResult.getFaces();
            for (Face face: faces) {
               System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
                  .writeValueAsString(face));
            }
         } while (listFacesResult != null && listFacesResult.getNextToken() !=
            null);
      }
   
   }
   ```

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/ListFacesInCollection.java).

   ```
   // snippet-start:[rekognition.java2.list_faces_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.Face;
   import software.amazon.awssdk.services.rekognition.model.ListFacesRequest;
   import software.amazon.awssdk.services.rekognition.model.ListFacesResponse;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import java.util.List;
   // snippet-end:[rekognition.java2.list_faces_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class ListFacesInCollection {
   
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId>\n\n" +
               "Where:\n" +
               "   collectionId - The name of the collection. \n\n";
   
           if (args.length < 1) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Faces in collection " + collectionId);
           listFacesCollection(rekClient, collectionId) ;
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.list_faces_collection.main]
       public static void listFacesCollection(RekognitionClient rekClient, String collectionId ) {
           try {
               ListFacesRequest facesRequest = ListFacesRequest.builder()
                   .collectionId(collectionId)
                   .maxResults(10)
                   .build();
   
               ListFacesResponse facesResponse = rekClient.listFaces(facesRequest);
               List<Face> faces = facesResponse.faces();
               for (Face face: faces) {
                   System.out.println("Confidence level there is a face: "+face.confidence());
                   System.out.println("The face Id value is "+face.faceId());
               }
   
           } catch (RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
            }
         }
       // snippet-end:[rekognition.java2.list_faces_collection.main]
     }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exibe a saída JSON para a operação da `list-faces` CLI. Substitua o valor de `collection-id` pelo nome da coleção que você deseja listar. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor.

   ```
   aws rekognition list-faces --collection-id "collection-id"  --profile profile-name
   ```

------
#### [ Python ]

   Este exemplo exibe uma lista de faces em uma coleção.

   Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def list_faces_in_collection(collection_id):
       maxResults = 2
       faces_count = 0
       tokens = True
   
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
       response = client.list_faces(CollectionId=collection_id,
                                    MaxResults=maxResults)
   
       print('Faces in collection ' + collection_id)
   
       while tokens:
   
           faces = response['Faces']
   
           for face in faces:
               print(face)
               faces_count += 1
           if 'NextToken' in response:
               nextToken = response['NextToken']
               response = client.list_faces(CollectionId=collection_id,
                                            NextToken=nextToken, MaxResults=maxResults)
           else:
               tokens = False
       return faces_count
   
   def main():
       collection_id = 'collection-id'
       faces_count = list_faces_in_collection(collection_id)
       print("faces count: " + str(faces_count))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Este exemplo exibe uma lista de faces em uma coleção.

   Altere o valor de `collectionId` para a coleção desejada.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class ListFaces
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           ListFacesResponse listFacesResponse = null;
           Console.WriteLine("Faces in collection " + collectionId);
   
           String paginationToken = null;
           do
           {
               if (listFacesResponse != null)
                   paginationToken = listFacesResponse.NextToken;
   
               ListFacesRequest listFacesRequest = new ListFacesRequest()
               {
                   CollectionId = collectionId,
                   MaxResults = 1,
                   NextToken = paginationToken
               };
   
               listFacesResponse = rekognitionClient.ListFaces(listFacesRequest);
               foreach(Face face in listFacesResponse.Faces)
                   Console.WriteLine(face.FaceId);
           } while (listFacesResponse != null && !String.IsNullOrEmpty(listFacesResponse.NextToken));
       }
   }
   ```

------

## ListFaces solicitação de operação
<a name="listfaces-request"></a>

A entrada para `ListFaces` é o ID da coleção para a qual você deseja listar os rostos. `MaxResults`é o número máximo de faces a serem retornadas. ListFaces também recebe uma lista de faces IDs para filtrar os resultados e uma ID de usuário fornecida para listar somente as faces associadas a um determinado usuário.

```
{
    "CollectionId": "MyCollection",
    "MaxResults": 1
}
```

Se a resposta tiver mais faces do que o solicitado por `MaxResults`, um token será retornado que você pode usar para obter o próximo conjunto de resultados, em uma chamada subsequente para `ListFaces`. Por exemplo:

```
{
    "CollectionId": "MyCollection",
    "NextToken": "sm+5ythT3aeEVIR4WA....",
    "MaxResults": 1
}
```

## ListFaces resposta da operação
<a name="listfaces-response"></a>

A resposta de `ListFaces` são informações sobre os metadados da face armazenados na coleção especificada.
+ **FaceModelVersion**— A versão do modelo facial associada à coleção. Para obter mais informações, consulte [Noções básicas do versionamento de modelo](face-detection-model.md).
+  **Faces** — Informações sobre os faces da coleção. Isso inclui informações sobre [BoundingBox](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_BoundingBox.html), confiança, identificadores de imagem e o ID da face. Para obter mais informações, consulte [Face](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_Face.html). 
+  **NextToken**— O token usado para obter o próximo conjunto de resultados. 

```
{
    "FaceModelVersion": "6.0", 
    "Faces": [  
        {
            "Confidence": 99.76940155029297, 
            "IndexFacesModelVersion": "6.0", 
            "UserId": "demoUser2", 
            "ImageId": "56a0ca74-1c83-39dd-b363-051a64168a65", 
            "BoundingBox": {
                "Width": 0.03177810087800026, 
                "Top": 0.36568498611450195, 
                "Left": 0.3453829884529114, 
                "Height": 0.056759100407361984
            }, 
            "FaceId": "c92265d4-5f9c-43af-a58e-12be0ce02bc3"
        },
        {
            "BoundingBox": {
                "Width": 0.03254450112581253, 
                "Top": 0.6080359816551208, 
                "Left": 0.5160620212554932, 
                "Height": 0.06347999721765518
            }, 
            "IndexFacesModelVersion": "6.0", 
            "FaceId": "851cb847-dccc-4fea-9309-9f4805967855", 
            "Confidence": 99.94369506835938, 
            "ImageId": "a8aed589-ceec-35f7-9c04-82e0b546b024"
        },
        {
            "BoundingBox": {
                "Width": 0.03094629943370819, 
                "Top": 0.4218429923057556, 
                "Left": 0.6513839960098267, 
                "Height": 0.05266290158033371
            }, 
            "IndexFacesModelVersion": "6.0", 
            "FaceId": "c0eb3b65-24a0-41e1-b23a-1908b1aaeac1", 
            "Confidence": 99.82969665527344, 
            "ImageId": "56a0ca74-1c83-39dd-b363-051a64168a65"
        }
    ]
}
```

# Excluir faces de uma coleção
<a name="delete-faces-procedure"></a>

Você pode usar a operação [DeleteFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteFaces.html) para excluir faces de uma coleção. Para obter mais informações, consulte [Gerenciar faces em uma coleção](managing-face-collections.md#collections-index-faces). 



**Como excluir faces de uma coleção**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `DeleteFaces`.

------
#### [ Java ]

   Este exemplo exclui uma única face de uma coleção.

   Altere o valor de `collectionId` para a coleção que contém a face que você deseja excluir. Altere o valor de `faces` para o ID da face que você deseja excluir. Para excluir várias faces, adicione a face IDs à `faces` matriz.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DeleteFacesRequest;
   import com.amazonaws.services.rekognition.model.DeleteFacesResult;
   
   import java.util.List;
   
   
   public class DeleteFacesFromCollection {
      public static final String collectionId = "MyCollection";
      public static final String faces[] = {"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"};
   
      public static void main(String[] args) throws Exception {
         
         AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
        
         
         DeleteFacesRequest deleteFacesRequest = new DeleteFacesRequest()
                 .withCollectionId(collectionId)
                 .withFaceIds(faces);
        
         DeleteFacesResult deleteFacesResult=rekognitionClient.deleteFaces(deleteFacesRequest);
         
        
         List < String > faceRecords = deleteFacesResult.getDeletedFaces();
         System.out.println(Integer.toString(faceRecords.size()) + " face(s) deleted:");
         for (String face: faceRecords) {
            System.out.println("FaceID: " + face);
         }
      }
   }
   ```

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/DeleteFacesFromCollection.java).

   ```
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.DeleteFacesRequest;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   // snippet-end:[rekognition.java2.delete_faces_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class DeleteFacesFromCollection {
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId> <faceId> \n\n" +
               "Where:\n" +
               "   collectionId - The id of the collection from which faces are deleted. \n\n" +
               "   faceId - The id of the face to delete. \n\n";
   
           if (args.length != 1) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           String faceId = args[1];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Deleting collection: " + collectionId);
           deleteFacesCollection(rekClient, collectionId, faceId);
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.delete_faces_collection.main]
       public static void deleteFacesCollection(RekognitionClient rekClient,
                                                String collectionId,
                                                String faceId) {
   
           try {
               DeleteFacesRequest deleteFacesRequest = DeleteFacesRequest.builder()
                   .collectionId(collectionId)
                   .faceIds(faceId)
                   .build();
   
               rekClient.deleteFaces(deleteFacesRequest);
               System.out.println("The face was deleted from the collection.");
   
           } catch(RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
       // snippet-end:[rekognition.java2.delete_faces_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exibe a saída JSON para a operação da `delete-faces` CLI. Substitua o valor de `collection-id` pelo nome da coleção que contém a face que você deseja excluir. Substitua o valor `face-ids` de por uma matriz de faces IDs que você deseja excluir. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor.

   ```
   aws rekognition delete-faces --collection-id "collection-id" --face-ids "faceid" --profile profile-name
   ```

------
#### [ Python ]

   Este exemplo exclui uma única face de uma coleção.

   Altere o valor de `collectionId` para a coleção que contém a face que você deseja excluir. Altere o valor de `faces` para o ID da face que você deseja excluir. Para excluir várias faces, adicione a face IDs à `faces` matriz. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def delete_faces_from_collection(collection_id, faces):
   
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
       response = client.delete_faces(CollectionId=collection_id,
                                      FaceIds=faces)
   
       print(str(len(response['DeletedFaces'])) + ' faces deleted:')
       for faceId in response['DeletedFaces']:
           print(faceId)
       return len(response['DeletedFaces'])
   
   
   def main():
       collection_id = 'collection-id'
       faces = []
       faces.append("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
   
       faces_count = delete_faces_from_collection(collection_id, faces)
       print("deleted faces count: " + str(faces_count))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Este exemplo exclui uma única face de uma coleção.

   Altere o valor de `collectionId` para a coleção que contém a face que você deseja excluir. Altere o valor de `faces` para o ID da face que você deseja excluir. Para excluir várias faces, adicione a face IDs à `faces` lista.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using System.Collections.Generic;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class DeleteFaces
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
           List<String> faces = new List<String>() { "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" };
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           DeleteFacesRequest deleteFacesRequest = new DeleteFacesRequest()
           {
               CollectionId = collectionId,
               FaceIds = faces
           };
   
           DeleteFacesResponse deleteFacesResponse = rekognitionClient.DeleteFaces(deleteFacesRequest);
           foreach (String face in deleteFacesResponse.DeletedFaces)
               Console.WriteLine("FaceID: " + face);
       }
   }
   ```

------

## DeleteFaces solicitação de operação
<a name="deletefaces-request"></a>

A entrada para `DeleteFaces` é o ID da coleção que contém as faces e uma matriz de faces IDs para as faces a serem excluídas. 

```
{
    "CollectionId": "MyCollection",
    "FaceIds": [
        "daf29cac-f910-41e9-851f-6eeb0e08f973"
    ]
}
```

## DeleteFaces resposta da operação
<a name="deletefaces-operation-response"></a>

A `DeleteFaces` resposta contém uma matriz de faces IDs para as faces que foram excluídas.

```
{
    "DeletedFaces": [
        "daf29cac-f910-41e9-851f-6eeb0e08f973"
    ]
}
```

 Se o rosto IDs fornecido na entrada estiver atualmente associado a um usuário, ele será devolvido por motivos válidos. UnsuccessfulFaceDeletions 

```
{
   "DeletedFaces": [
        "daf29cac-f910-41e9-851f-6eeb0e08f973"
    ],
     "UnsuccessfulFaceDeletions" : [
        {
           "FaceId" : "0b683aed-a0f1-48b2-9b5e-139e9cc2a757",
           "UserId" : "demoUser1",
           "Reason" : ["ASSOCIATED_TO_AN_EXISTING_USER"]
        }
     ]
}
```

# Criar um usuário
<a name="create-user"></a>

Você pode usar a [CreateUser](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateUser.html)operação para criar um novo usuário em uma coleção usando uma ID de usuário exclusiva fornecida por você. Em seguida, você pode associar várias faces ao usuário recém-criado.

**Para criar um usuário (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize uma conta de usuário do IAM com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `CreateUser`.

------
#### [ Java ]

   Este exemplo de código Java cria um usuário. 

   ```
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.CreateUserRequest;
   import com.amazonaws.services.rekognition.model.CreateUserResult;
   
   
   public class CreateUser {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           //Replace collectionId and userId with the name of the user that you want to create in that target collection.
   
           String collectionId = "MyCollection";
           String userId = "demoUser";
           System.out.println("Creating new user: " +
                   userId);
   
           CreateUserRequest request = new CreateUserRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId);
   
           rekognitionClient.createUser(request);
       }
   
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando cria um usuário usando a operação `create-user` CLI. 

   ```
   aws rekognition create-user --user-id user-id --collection-id collection-name --region region-name
   --client-request-token request-token
   ```

------
#### [ Python ]

   Este exemplo de código Python cria um usuário. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def create_user(collection_id, user_id):
       """
       Creates a new User within a collection specified by CollectionId. 
       Takes UserId as a parameter, which is a user provided ID which 
       should be unique within the collection.
   
       :param collection_id: The ID of the collection where the indexed faces will be stored at.
       :param user_id: ID for the UserID to be created. This ID needs to be unique within the collection.
       
       :return: The indexFaces response
       """
       try:
           logger.info(f'Creating user: {collection_id}, {user_id}')
           client.create_user(
               CollectionId=collection_id,
               UserId=user_id
           )
       except ClientError:
           logger.exception(f'Failed to create user with given user id: {user_id}')
           raise
   
   def main():
       collection_id = "collection-id"
       user_id = "user-id"
       create_user(collection_id, user_id)
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ Go ]

   Este exemplo de código Go usa o AWS Go SDK V2 e cria um usuário. 

   ```
   package main
   
   import (
   	"context"
   	"fmt"
   	"log"
   
   	"github.com/aws/aws-sdk-go-v2/aws"
   	"github.com/aws/aws-sdk-go-v2/config"
   	"github.com/aws/aws-sdk-go-v2/service/rekognition"
   )
   
   func main() {
   	// Load the AWS SDK configuration
   	cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
   	if err != nil {
   		log.Fatalf("Failed to load configuration: %v", err)
   	}
   
   	// Create a Rekognition client
   	client := rekognition.NewFromConfig(cfg)
   
   	// Set up the input parameters
   	input := &rekognition.CreateUserInput{
   		CollectionId: aws.String("my-new-collection"), // Replace with your collection ID
   		UserId:       aws.String("user12345678910"),   // Replace with desired user ID
   	}
   
   	// Call the CreateUser operation
   	result, err := client.CreateUser(context.TODO(), input)
   	if err != nil {
   		log.Fatalf("Failed to create user: %v", err)
   	}
   
   	// Print out the results
   	fmt.Printf("User created successfully:\n")
   
   }
   ```

------

# Excluir um usuário
<a name="delete-user"></a>

Você pode usar a [DeleteUser](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DeleteUser.html)operação para excluir um usuário de uma coleção, com base na ID de usuário fornecida. Observe que todas as faces associadas à ID de usuário são desassociadas da ID de usuário antes que a ID de usuário especificada seja excluída.

**Para excluir um usuário (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize uma conta de usuário do IAM com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `DeleteUser`.

------
#### [ Java ]

   Este exemplo de código Java exclui um usuário. 

   ```
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DeleteUserRequest;
   import com.amazonaws.services.rekognition.model.DeleteUserResult;
   
   
   public class DeleteUser {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           //Replace collectionId and userId with the name of the user that you want to delete from that target collection.
   
           String collectionId = "MyCollection";
           String userId = "demoUser";
           System.out.println("Deleting existing user: " +
                   userId);
   
           DeleteUserRequest request = new DeleteUserRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId);
   
           rekognitionClient.deleteUser(request);
       }
   
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exclui um usuário usando a operação `create-user` CLI. 

   ```
   aws rekognition delete-user --collection-id MyCollection 
   --user-id user-id --collection-id collection-name --region region-name
   ```

------
#### [ Python ]

   Este exemplo de código em Python exclui um usuário. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def delete_user(collection_id, user_id):
           """
           Delete the user from the given collection
   
           :param collection_id: The ID of the collection where user is stored.
           :param user_id: The ID of the user in the collection to delete.
           """
           logger.info(f'Deleting user: {collection_id}, {user_id}')
           try:
               client.delete_user(
                   CollectionId=collection_id,
                   UserId=user_id
               )
           except ClientError:
               logger.exception(f'Failed to delete user with given user id: {user_id}')
               raise
   
   def main():
       collection_id = "collection-id"
       user_id = "user-id"
       delete_user(collection_id, user_id)
   
   if __name__ == "__main__":
       main()
   ```

------

# Associando faces a um usuário
<a name="associate-faces"></a>

Você pode usar a [AssociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_AssociatingFaces.html)operação para associar várias faces individuais a um único usuário. Para associar um rosto a um usuário, você deve primeiro criar uma coleção e um usuário. Observe que os vetores de face devem residir na mesma coleção em que o vetor do usuário reside.

**Para associar faces (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `AssociateFaces`.

------
#### [ Java ]

   Este exemplo de código Java associa um rosto a um usuário.

   ```
   import java.util.Arrays;
   import java.util.List;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.AssociateFacesRequest;
   import com.amazonaws.services.rekognition.model.AssociateFacesResult;
   
   
   public class AssociateFaces {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           /* Replace the below configurations to allow you successfully run the example
   
              @collectionId: The collection where user and faces are stored
              @userId: The user which faces will get associated to
              @faceIds: The list of face IDs that will get associated to the given user
              @userMatchThreshold: Minimum User match confidence required for the face to
                                  be associated with a User that has at least one faceID already associated
            */
   
           String collectionId = "MyCollection";
           String userId = "demoUser";
           String faceId1 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
           String faceId2 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
           List<String> faceIds = Arrays.asList(faceid1,faceid2);
   
           float userMatchThreshold = 0f;
           System.out.println("Associating faces to the existing user: " +
                   userId);
   
           AssociateFacesRequest request = new AssociateFacesRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId)
                   .withFaceIds(faceIds)
                   .withUserMatchThreshold(userMatchThreshold);
   
           AssociateFacesResult result = rekognitionClient.associateFaces(request);
   
           System.out.println("Successful face associations: " + result.getAssociatedFaces().size());
           System.out.println("Unsuccessful face associations: " + result.getUnsuccessfulFaceAssociations().size());
       }
   
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando associa uma face a um usuário, usando a operação `associate-faces` CLI.

   ```
   aws rekognition associate-faces --user-id user-id --face-ids face-id-1 face-id-2
   --collection-id collection-name 
   --region region-name
   ```

------
#### [ Python ]

   Este exemplo de código em Python associa uma face a um usuário. 

   ```
   from botocore.exceptions import ClientError
   import boto3
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def associate_faces(collection_id, user_id, face_ids):
       """
       Associate stored faces within collection to the given user
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param user_id: The ID of the user that we want to associate faces to
       :param face_ids: The list of face IDs to be associated to the given user
   
       :return: response of AssociateFaces API
       """
       logger.info(f'Associating faces to user: {user_id}, {face_ids}')
       try:
           response = client.associate_faces(
               CollectionId=collection_id,
               UserId=user_id,
               FaceIds=face_ids
           )
           print(f'- associated {len(response["AssociatedFaces"])} faces')
       except ClientError:
           logger.exception("Failed to associate faces to the given user")
           raise
       else:
           print(response)
           return response
   
   def main():
       face_ids = ["faceId1", "faceId2"]
       collection_id = "collection-id"
       user_id = "user-id"
       associate_faces(collection_id, user_id, face_ids)
   
   if __name__ == "__main__":
       main()
   ```

------

## AssociateFaces resposta da operação
<a name="associatefaces-operation-response"></a>

A resposta para `AssociateFaces` inclui o `UserStatus`, que é o status da solicitação de dissociação, bem como uma lista de itens `FaceIds` a serem associados. Uma lista de `UnsuccessfulFaceAssociations` também é retornada. Depois de enviar uma solicitação para `AssociateFaces`, a operação pode levar cerca de um minuto para ser concluída. 

Por esse motivo, o UserStatus é retornado, que pode ter os seguintes valores: 
+ CRIADO: indica que o 'Usuário' foi criado com sucesso e nenhuma face está associada a ele atualmente. O 'usuário' estará nesse estado antes que qualquer chamada 'AssociateFaces' bem-sucedida seja feita.
+ ATUALIZAÇÃO - Indica que o 'Usuário' está sendo atualizado para refletir os novos associated/disassociated rostos e se tornará ATIVO em alguns segundos. Os resultados da pesquisa podem conter "Usuário" nesse estado e os clientes podem optar por ignorá-lo nos resultados retornados.
+ ATIVO - Indica que o **'Usuário**'**** está atualizado para refletir todas as associated/disassociated faces e está em um estado pesquisável.

```
{
    "UnsuccessfulFaceAssociations": [
        {
            "Reasons": [
                "LOW_MATCH_CONFIDENCE"
            ], 
            "FaceId": "f5817d37-94f6-0000-bfee-1a2b3c4d5e6f", 
            "Confidence": 0.9375374913215637
        }, 
        {
            "Reasons": [
                "ASSOCIATED_TO_A_DIFFERENT_IDENTITY"
            ], 
            "FaceId": "851cb847-dccc-1111-bfee-1a2b3c4d5e6f", 
            "UserId": "demoUser2"
        }
    ], 
    "UserStatus": "UPDATING", 
    "AssociatedFaces": [
        {
            "FaceId": "35ebbb41-7f67-2222-bfee-1a2b3c4d5e6f"
        }
    ]
}
```

# Desassocianda faces de um usuário
<a name="disassociate-faces"></a>

Você pode usar a [DisassociateFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DisassociateFaces.html)operação para remover a associação entre uma ID de usuário e uma ID facial.

**Para desassociar faces (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `DisassociateFaces`.

------
#### [ Java ]

   Este exemplo de Java remove a associação entre um FaceID e um UserID com a operação `DisassociateFaces`.

   ```
   import java.util.Arrays;
   import java.util.List;
   
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.DisassociateFacesRequest;
   import com.amazonaws.services.rekognition.model.DisassociateFacesResult;
   
   
   public class DisassociateFaces {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           /* Replace the below configurations to allow you successfully run the example
   
              @collectionId: The collection where user and faces are stored
              @userId: The user which faces will get disassociated from
              @faceIds: The list of face IDs that will get disassociated from the given user
            */
   
           String collectionId = "MyCollection";
           String userId = "demoUser";
           String faceId1 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
           String faceId2 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
           List<String> faceIds = Arrays.asList(faceid1,faceid2);
   
           System.out.println("Disassociating faces from existing user: " +
                   userId);
   
           DisassociateFacesRequest request = new DisassociateFacesRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId)
                   .withFaceIds(faceIds)
   
           DisassociateFacesResult result = rekognitionClient.disassociateFaces(request);
   
           System.out.println("Successful face disassociations: " + result.getDisassociatedFaces().size());
           System.out.println("Unsuccessful face disassociations: " + result.getUnsuccessfulFaceDisassociations().size());
       }
   
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando remove a associação entre um FaceID e um UserID com a operação. `DisassociateFaces`

   ```
   aws rekognition disassociate-faces --face-ids list-of-face-ids
   --user-id user-id --collection-id collection-name --region region-name
   ```

------
#### [ Python ]

   O exemplo a seguir remove a associação entre um FaceID e um UserID com a operação `DisassociateFaces`.

   ```
   from botocore.exceptions import ClientError
   import boto3
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def disassociate_faces(collection_id, user_id, face_ids):
       """
       Disassociate stored faces within collection to the given user
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param user_id: The ID of the user that we want to disassociate faces from
       :param face_ids: The list of face IDs to be disassociated from the given user
   
       :return: response of AssociateFaces API
       """
       logger.info(f'Disssociating faces from user: {user_id}, {face_ids}')
       try:
           response = client.disassociate_faces(
               CollectionId=collection_id,
               UserId=user_id,
               FaceIds=face_ids
           )
           print(f'- disassociated {len(response["DisassociatedFaces"])} faces')
       except ClientError:
           logger.exception("Failed to disassociate faces from the given user")
           raise
       else:
           print(response)
           return response
   
   def main():
       face_ids = ["faceId1", "faceId2"]
       collection_id = "collection-id"
       user_id = "user-id"
       disassociate_faces(collection_id, user_id, face_ids)
   
   if __name__ == "__main__":
       main()
   ```

------

## DisassociateFaces resposta da operação
<a name="disassociate-faces-response"></a>

A resposta para `DisassociateFaces` inclui o `UserStatus`, que é o status da solicitação de dissociação, bem como uma lista de `FaceIds` que não devem ser associados. Uma lista de `UnsuccessfulFaceDisassociations` também é retornada. Depois de enviar uma solicitação para DisassociateFaces, a operação pode levar cerca de um minuto para ser concluída. Por esse motivo, o UserStatus é retornado, que pode ter os seguintes valores: 
+ CRIADO: indica que o 'Usuário' foi criado com sucesso e nenhuma face está associada a ele atualmente. O 'usuário' estará nesse estado antes que qualquer chamada 'AssociateFaces' bem-sucedida seja feita.
+ ATUALIZAÇÃO - Indica que o 'Usuário' está sendo atualizado para refletir os novos associated/disassociated rostos e se tornará ATIVO em alguns segundos. Os resultados da pesquisa podem conter "Usuário" nesse estado e os clientes podem optar por ignorá-lo nos resultados retornados.
+ ATIVO - Indica que o **'Usuário**'**** está atualizado para refletir todas as associated/disassociated faces e está em um estado pesquisável.

```
{
    "UserStatus": "UPDATING", 
    "DisassociatedFaces": [
        {
            "FaceId": "c92265d4-5f9c-43af-a58e-12be0ce02bc3"
        }
    ], 
    "UnsuccessfulFaceDisassociations": [
        {
            "Reasons": [
                "ASSOCIATED_TO_A_DIFFERENT_IDENTITY"
            ], 
            "FaceId": "f5817d37-94f6-4335-bfee-6cf79a3d806e", 
            "UserId": "demoUser1"
        }
    ]
}
```

# Listando usuários em uma coleção
<a name="list-users"></a>

Você pode usar a [ListUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListUsers.html)operação para listar UserIds e UserStatus o. Para ver as faces associadas IDs a uma ID de usuário, use a operação. [ListFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ListFaces.html)

**Listar usuários (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `ListUsers`.

------
#### [ Java ]

   Este exemplo de Java lista os usuários em uma coleção usando a operação `ListUsers`.

   ```
   import java.util.List;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.ListUsersRequest;
   import com.amazonaws.services.rekognition.model.ListUsersResult;
   import com.amazonaws.services.rekognition.model.User;
   
   public class ListUsers {
   
       public static void main(String[] args) throws Exception {
   
   
           AmazonRekognition amazonRekognition = AmazonRekognitionClientBuilder.defaultClient();
   
   
           System.out.println("Listing users");
           int limit = 10;
           ListUsersResult listUsersResult = null;
           String paginationToken = null;
           do {
               if (listUsersResult != null) {
                   paginationToken = listUsersResult.getNextToken();
               }
               ListUsersRequest request = new ListUsersRequest()
                       .withCollectionId(collectionId)
                       .withMaxResults(limit)
                       .withNextToken(paginationToken);
               listUsersResult = amazonRekognition.listUsers(request);
   
               List<User> users = listUsersResult.getUsers();
               for (User currentUser: users) {
                   System.out.println(currentUser.getUserId() + " : " + currentUser.getUserStatus());
               }
           } while (listUsersResult.getNextToken() != null);
       }
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando lista os usuários em uma coleção com a `ListUsers` operação.

   ```
   aws rekognition list-users --collection-id collection-id --max-results number-of-max-results
   ```

------
#### [ Python ]

   O exemplo a seguir lista os usuários em uma coleção com a operação `ListUsers`.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   from pprint import pprint
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   
   def list_users(collection_id):
       """
       List all users from the given collection
   
       :param collection_id: The ID of the collection where user is stored.
   
       :return: response that contains list of Users found within given collection
       """
       logger.info(f'Listing the users in collection: {collection_id}')
       try:
           response = client.list_users(
               CollectionId=collection_id
           )
           pprint(response["Users"])
       except ClientError:
           logger.exception(f'Failed to list all user from given collection: {collection_id}')
           raise
       else:
           return response
   
   def main():
       collection_id = "collection-id"
       list_users(collection_id)
   
   if __name__ == "__main__":
       main()
   ```

------

## ListUsers resposta da operação
<a name="list-users-response"></a>

A resposta a uma solicitação ListUsers inclui uma lista dos `Users` itens da coleção junto com os `UsedId` e `UserStatus` do Usuário.

```
{
    "NextToken": "B1asJT3bAb/ttuGgPFV8BZoBZyGQzlUHXbuTNLh48a6enU7kXKw43hpOwizW7LOk/Gk7Em09lznoq6+FcDCcSq2olrn7A98BLkt5keu+ZRVRUTyrXtT6J7Hmp+ieQ2an6Zu0qzPfcdPeaJ9eAxG2d0WNrzJgi5hvmjoiSTTfKX3MQz1sduWQkvAAs4hZfhZoKFahFlqWofshCXa/FHAAY3PL1PjxXbkNeSSMq8V7i1MlKCdrPVykCv9MokpPt7jtNvKPEZGUhxgBTFMxNWLEcFnzAiCWDg91dFy/LalshPjXA9UVc5Gx9vIJNQ/eO3cQRghAkCT3FOAiXsLAnA015ODTomZpWWVpqB21wKpI3LYmfAVFrDPGzpbTVlRmLsJm41bkmnBBBw9+DHz1Jn7zW+qc5Fs3yaHu0f51Xg==", 
    "Users": [
        {
            "UserId": "demoUser4", 
            "UserStatus": "CREATED"
        }, 
        {
            "UserId": "demoUser2", 
            "UserStatus": "CREATED"
        }
    ]
}
```

# Procurando uma face com um ID facial
<a name="search-face-with-id-procedure"></a>

Você pode usar a [SearchFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFaces.html)operação para pesquisar usuários em uma coleção que correspondam à maior face em uma imagem fornecida.

O ID da face é retornado na resposta da operação [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html) quando a face é detectada e adicionada a uma coleção. Para obter mais informações, consulte [Gerenciar faces em uma coleção](managing-face-collections.md#collections-index-faces).



**Para pesquisar uma face em uma coleção usando o ID da face (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `SearchFaces`.

------
#### [ Java ]

   Este exemplo exibe informações sobre faces correspondentes a uma face identificada pelo respectivo ID.

   Altere o valor de `collectionID` para a coleção que contém a face obrigatória. Altere o valor de `faceId` para o identificador da face que você deseja encontrar.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.fasterxml.jackson.databind.ObjectMapper;
   import com.amazonaws.services.rekognition.model.FaceMatch;
   import com.amazonaws.services.rekognition.model.SearchFacesRequest;
   import com.amazonaws.services.rekognition.model.SearchFacesResult;
   import java.util.List;
   
   
     public class SearchFaceMatchingIdCollection {
         public static final String collectionId = "MyCollection";
         public static final String faceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
         
       public static void main(String[] args) throws Exception {
           
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
         
           ObjectMapper objectMapper = new ObjectMapper();
         // Search collection for faces matching the face id.
         
         SearchFacesRequest searchFacesRequest = new SearchFacesRequest()
                 .withCollectionId(collectionId)
                 .withFaceId(faceId)
                 .withFaceMatchThreshold(70F)
                 .withMaxFaces(2);
              
          SearchFacesResult searchFacesByIdResult = 
                  rekognitionClient.searchFaces(searchFacesRequest);
   
          System.out.println("Face matching faceId " + faceId);
         List < FaceMatch > faceImageMatches = searchFacesByIdResult.getFaceMatches();
         for (FaceMatch face: faceImageMatches) {
            System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
                    .writeValueAsString(face));
            
            System.out.println();
         }
       }
   
   }
   ```

   Execute o código de exemplo. As informações sobre faces correspondentes são exibidas.

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/SearchFaceMatchingIdCollection.java).

   ```
   // snippet-start:[rekognition.java2.match_faces_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.SearchFacesRequest;
   import software.amazon.awssdk.services.rekognition.model.SearchFacesResponse;
   import software.amazon.awssdk.services.rekognition.model.FaceMatch;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import java.util.List;
   // snippet-end:[rekognition.java2.match_faces_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class SearchFaceMatchingIdCollection {
   
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId> <sourceImage>\n\n" +
               "Where:\n" +
               "   collectionId - The id of the collection.  \n" +
               "   sourceImage - The path to the image (for example, C:\\AWS\\pic1.png). \n\n";
   
           if (args.length != 2) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           String faceId = args[1];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Searching for a face in a collections");
           searchFacebyId(rekClient, collectionId, faceId ) ;
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.match_faces_collection.main]
       public static void searchFacebyId(RekognitionClient rekClient,String collectionId, String faceId) {
   
           try {
               SearchFacesRequest searchFacesRequest = SearchFacesRequest.builder()
                   .collectionId(collectionId)
                   .faceId(faceId)
                   .faceMatchThreshold(70F)
                   .maxFaces(2)
                   .build();
   
               SearchFacesResponse imageResponse = rekClient.searchFaces(searchFacesRequest) ;
               System.out.println("Faces matching in the collection");
               List<FaceMatch> faceImageMatches = imageResponse.faceMatches();
               for (FaceMatch face: faceImageMatches) {
                   System.out.println("The similarity level is  "+face.similarity());
                   System.out.println();
               }
   
           } catch (RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
       // snippet-end:[rekognition.java2.match_faces_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exibe a saída JSON para a operação da `search-faces` CLI. Substitua o valor de `face-id` pelo identificador da face que você deseja pesquisar e substitua o valor de `collection-id` pela coleção que você deseja pesquisar. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor.

   ```
   aws rekognition search-faces --face-id face-id --collection-id "collection-id" --profile profile-name
   ```

------
#### [ Python ]

   Este exemplo exibe informações sobre faces correspondentes a uma face identificada pelo respectivo ID.

   Altere o valor de `collectionID` para a coleção que contém a face obrigatória. Altere o valor de `faceId` para o identificador da face que você deseja encontrar. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   def search_face_in_collection(face_id, collection_id):
       threshold = 90
       max_faces = 2
   
       session = boto3.Session(profile_name='profile-name')
       client = session.client('rekognition')
   
       response = client.search_faces(CollectionId=collection_id,
                                      FaceId=face_id,
                                      FaceMatchThreshold=threshold,
                                      MaxFaces=max_faces)
   
       face_matches = response['FaceMatches']
       print('Matching faces')
       for match in face_matches:
           print('FaceId:' + match['Face']['FaceId'])
           print('Similarity: ' + "{:.2f}".format(match['Similarity']) + "%")
   
       return len(face_matches)
   
   def main():
       face_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
       collection_id = 'collection-id'
   
       faces = []
       faces.append(face_id)
   
       faces_count = search_face_in_collection(face_id, collection_id)
       print("faces found: " + str(faces_count))
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ .NET ]

   Este exemplo exibe informações sobre faces correspondentes a uma face identificada pelo respectivo ID.

   Altere o valor de `collectionID` para a coleção que contém a face obrigatória. Altere o valor de `faceId` para o identificador da face que você deseja encontrar.

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class SearchFacesMatchingId
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
           String faceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           // Search collection for faces matching the face id.
   
           SearchFacesRequest searchFacesRequest = new SearchFacesRequest()
           {
               CollectionId = collectionId,
               FaceId = faceId,
               FaceMatchThreshold = 70F,
               MaxFaces = 2
           };
   
           SearchFacesResponse searchFacesResponse = rekognitionClient.SearchFaces(searchFacesRequest);
   
           Console.WriteLine("Face matching faceId " + faceId);
   
           Console.WriteLine("Matche(s): ");
           foreach (FaceMatch face in searchFacesResponse.FaceMatches)
               Console.WriteLine("FaceId: " + face.Face.FaceId + ", Similarity: " + face.Similarity);
       }
   }
   ```

   Execute o código de exemplo. As informações sobre faces correspondentes são exibidas.

------

## SearchFaces solicitação de operação
<a name="searchfaces-operation-request"></a>

Com um determinado ID de face (cada face armazenada na coleção de faces tem um ID), o `SearchFaces` pesquisa a coleção de faces semelhantes na coleção de faces especificada. A resposta não inclui a face que você está procurando. Ela inclui apenas faces semelhantes. Por padrão, `SearchFaces` retorna faces nas quais o algoritmo detecta semelhança maior que 80%. A semelhança indica o nível de proximidade da face com a face de entrada. Você também pode usar `FaceMatchThreshold` para especificar um valor diferente. 

```
{
    "CollectionId": "MyCollection",
    "FaceId": "0b683aed-a0f1-48b2-9b5e-139e9cc2a757",
    "MaxFaces": 2,
    "FaceMatchThreshold": 99
}
```

## SearchFaces resposta da operação
<a name="searchfaces-operation-response"></a>

A operação retorna uma matriz de correspondências de face encontradas e o ID de face fornecido como entrada.

```
{
    "SearchedFaceId": "7ecf8c19-5274-5917-9c91-1db9ae0449e2",
    "FaceMatches": [ list of face matches found ]
}
```

Para cada correspondência de face encontrada, a resposta inclui metadados de semelhança e face, conforme mostrado na seguinte resposta de exemplo: 

```
{
   ...
    "FaceMatches": [
        {
            "Similarity": 100.0,
            "Face": {
                "BoundingBox": {
                    "Width": 0.6154,
                    "Top": 0.2442,
                    "Left": 0.1765,
                    "Height": 0.4692
                },
                "FaceId": "84de1c86-5059-53f2-a432-34ebb704615d",
                "Confidence": 99.9997,
                "ImageId": "d38ebf91-1a11-58fc-ba42-f978b3f32f60"
            }
        },
        {
            "Similarity": 84.6859,
            "Face": {
                "BoundingBox": {
                    "Width": 0.2044,
                    "Top": 0.2254,
                    "Left": 0.4622,
                    "Height": 0.3119
                },
                "FaceId": "6fc892c7-5739-50da-a0d7-80cc92c0ba54",
                "Confidence": 99.9981,
                "ImageId": "5d913eaf-cf7f-5e09-8c8f-cb1bdea8e6aa"
            }
        }
    ]
}
```

# Procurando um rosto com uma imagem
<a name="search-face-with-image-procedure"></a>

Você pode usar a operação [SearchFacesByImage](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchFacesByImage.html) para pesquisar faces em uma coleção que corresponda à maior face em uma imagem fornecida.

Para obter mais informações, consulte [Pesquisa de faces e usuários em uma coleção](collections-search-faces.md). 



**Para pesquisar uma face em uma coleção usando uma imagem (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess` e `AmazonS3ReadOnlyAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Carregue uma imagem (que contenha uma ou mais faces) no bucket do S3. 

   Para obter instruções, consulte [Como fazer upload de objetos no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UploadingObjectsintoAmazonS3.html) no *Guia do usuário do Amazon Simple Storage Service*.

1. Use os exemplos a seguir para chamar a operação `SearchFacesByImage`.

------
#### [ Java ]

   Este exemplo exibe informações sobre faces correspondentes à maior face em uma imagem. O exemplo de código especifica os parâmetros `FaceMatchThreshold` e `MaxFaces` para limitar os resultados retornados na resposta.

   No exemplo a seguir, altere o seguinte: altere o valor de `collectionId` para a coleção que você deseja pesquisar, altere o valor de `bucket` para o bucket que contém a imagem de entrada e altere o valor de `photo` para a imagem de entrada. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   package aws.example.rekognition.image;
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.FaceMatch;
   import com.amazonaws.services.rekognition.model.Image;
   import com.amazonaws.services.rekognition.model.S3Object;
   import com.amazonaws.services.rekognition.model.SearchFacesByImageRequest;
   import com.amazonaws.services.rekognition.model.SearchFacesByImageResult;
   import java.util.List;
   import com.fasterxml.jackson.databind.ObjectMapper;
   
   
   public class SearchFaceMatchingImageCollection {
       public static final String collectionId = "MyCollection";
       public static final String bucket = "bucket";
       public static final String photo = "input.jpg";
         
       public static void main(String[] args) throws Exception {
   
          AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
           
         ObjectMapper objectMapper = new ObjectMapper();
         
          // Get an image object from S3 bucket.
         Image image=new Image()
                 .withS3Object(new S3Object()
                         .withBucket(bucket)
                         .withName(photo));
         
         // Search collection for faces similar to the largest face in the image.
         SearchFacesByImageRequest searchFacesByImageRequest = new SearchFacesByImageRequest()
                 .withCollectionId(collectionId)
                 .withImage(image)
                 .withFaceMatchThreshold(70F)
                 .withMaxFaces(2);
              
          SearchFacesByImageResult searchFacesByImageResult = 
                  rekognitionClient.searchFacesByImage(searchFacesByImageRequest);
   
          System.out.println("Faces matching largest face in image from" + photo);
         List < FaceMatch > faceImageMatches = searchFacesByImageResult.getFaceMatches();
         for (FaceMatch face: faceImageMatches) {
             System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
                     .writeValueAsString(face));
            System.out.println();
         }
      }
   }
   ```

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/SearchFaceMatchingImageCollection.java).

   ```
   // snippet-start:[rekognition.java2.search_faces_collection.import]
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.core.SdkBytes;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageRequest;
   import software.amazon.awssdk.services.rekognition.model.Image;
   import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageResponse;
   import software.amazon.awssdk.services.rekognition.model.FaceMatch;
   import java.io.File;
   import java.io.FileInputStream;
   import java.io.FileNotFoundException;
   import java.io.InputStream;
   import java.util.List;
   // snippet-end:[rekognition.java2.search_faces_collection.import]
   
   /**
    * Before running this Java V2 code example, set up your development environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class SearchFaceMatchingImageCollection {
   
       public static void main(String[] args) {
   
           final String usage = "\n" +
               "Usage: " +
               "   <collectionId> <sourceImage>\n\n" +
               "Where:\n" +
               "   collectionId - The id of the collection.  \n" +
               "   sourceImage - The path to the image (for example, C:\\AWS\\pic1.png). \n\n";
   
           if (args.length != 2) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String collectionId = args[0];
           String sourceImage = args[1];
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
               .region(region)
               .credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
               .build();
   
           System.out.println("Searching for a face in a collections");
           searchFaceInCollection(rekClient, collectionId, sourceImage ) ;
           rekClient.close();
       }
   
       // snippet-start:[rekognition.java2.search_faces_collection.main]
       public static void searchFaceInCollection(RekognitionClient rekClient,String collectionId, String sourceImage) {
   
           try {
               InputStream sourceStream = new FileInputStream(new File(sourceImage));
               SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream);
               Image souImage = Image.builder()
                   .bytes(sourceBytes)
                   .build();
   
               SearchFacesByImageRequest facesByImageRequest = SearchFacesByImageRequest.builder()
                   .image(souImage)
                   .maxFaces(10)
                   .faceMatchThreshold(70F)
                   .collectionId(collectionId)
                   .build();
   
               SearchFacesByImageResponse imageResponse = rekClient.searchFacesByImage(facesByImageRequest) ;
               System.out.println("Faces matching in the collection");
               List<FaceMatch> faceImageMatches = imageResponse.faceMatches();
               for (FaceMatch face: faceImageMatches) {
                   System.out.println("The similarity level is  "+face.similarity());
                   System.out.println();
               }
   
           } catch (RekognitionException | FileNotFoundException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
       // snippet-end:[rekognition.java2.search_faces_collection.main]
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando exibe a saída JSON para a operação da `search-faces-by-image` CLI. Substitua o valor de `Bucket` pelo bucket do S3 usado na etapa 2. Substitua o valor de `Name` pelo nome de arquivo da imagem usado na etapa 2. Substitua o valor de `collection-id` pela coleção na qual você deseja pesquisar. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor.

   ```
   aws rekognition search-faces-by-image --image '{"S3Object":{"Bucket":"bucket-name","Name":"image-name"}}' \
   --collection-id "collection-id" --profile profile-name
   ```

    Se você estiver acessando a CLI em um dispositivo Windows, use aspas duplas em vez de aspas simples e escape das aspas duplas internas com barra invertida (ou seja, \$1) para resolver quaisquer erros de analisador que você possa encontrar. Para obter um exemplo, veja o seguinte: 

   ```
   aws rekognition search-faces-by-image --image "{\"S3Object\":{\"Bucket\":\"bucket-name\",\"Name\":\"image-name\"}}" \
   --collection-id "collection-id" --profile profile-name
   ```

------
#### [ Python ]

   Este exemplo exibe informações sobre faces correspondentes à maior face em uma imagem. O exemplo de código especifica os parâmetros `FaceMatchThreshold` e `MaxFaces` para limitar os resultados retornados na resposta.

   No exemplo a seguir, altere o seguinte: altere o valor da coleção `collectionId` que você deseja pesquisar e substitua os valores de `bucket` e `photo` pelos nomes do bucket e da imagem do Amazon S3 que você usou na etapa 2. Substitua o valor de `profile_name` na linha que cria a sessão do Rekognition pelo nome do seu perfil de desenvolvedor. 

   ```
   #Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   
   if __name__ == "__main__":
   
       bucket='amzn-s3-demo-bucket'
       collectionId='MyCollection'
       fileName='input.jpg'
       threshold = 70
       maxFaces=2
   
       client=boto3.client('rekognition')
   
     
       response=client.search_faces_by_image(CollectionId=collectionId,
                                   Image={'S3Object':{'Bucket':bucket,'Name':fileName}},
                                   FaceMatchThreshold=threshold,
                                   MaxFaces=maxFaces)
   
                                   
       faceMatches=response['FaceMatches']
       print ('Matching faces')
       for match in faceMatches:
               print ('FaceId:' + match['Face']['FaceId'])
               print ('Similarity: ' + "{:.2f}".format(match['Similarity']) + "%")
               print
   ```

------
#### [ .NET ]

   Este exemplo exibe informações sobre faces correspondentes à maior face em uma imagem. O exemplo de código especifica os parâmetros `FaceMatchThreshold` e `MaxFaces` para limitar os resultados retornados na resposta.

   No exemplo a seguir, altere o seguinte: altere o valor da coleção `collectionId` que você deseja pesquisar e substitua os valores de `bucket` e `photo` pelos nomes do bucket e da imagem do Amazon S3 que você usou na etapa 2. 

   ```
   //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   using System;
   using Amazon.Rekognition;
   using Amazon.Rekognition.Model;
   
   public class SearchFacesMatchingImage
   {
       public static void Example()
       {
           String collectionId = "MyCollection";
           String bucket = "amzn-s3-demo-bucket";
           String photo = "input.jpg";
   
           AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
   
           // Get an image object from S3 bucket.
           Image image = new Image()
           {
               S3Object = new S3Object()
               {
                   Bucket = bucket,
                   Name = photo
               }
           };
   
           SearchFacesByImageRequest searchFacesByImageRequest = new SearchFacesByImageRequest()
           {
               CollectionId = collectionId,
               Image = image,
               FaceMatchThreshold = 70F,
               MaxFaces = 2
           };
   
           SearchFacesByImageResponse searchFacesByImageResponse = rekognitionClient.SearchFacesByImage(searchFacesByImageRequest);
   
           Console.WriteLine("Faces matching largest face in image from " + photo);
           foreach (FaceMatch face in searchFacesByImageResponse.FaceMatches)
               Console.WriteLine("FaceId: " + face.Face.FaceId + ", Similarity: " + face.Similarity);
       }
   }
   ```

------

## SearchFacesByImage solicitação de operação
<a name="searchfacesbyimage-operation-request"></a>

Os parâmetros de entrada `SearchFacesImageByImage` são a coleção para pesquisa e o local da imagem de origem. Neste exemplo, a imagem de origem é armazenada em um bucket do Amazon S3 (`S3Object`). Também especificados estão o número máximo de faces a serem retornadas (`Maxfaces`) e o mínimo de confiança que deve ser correspondido para uma face ser retornada (`FaceMatchThreshold`).

```
{
    "CollectionId": "MyCollection",
    "Image": {
        "S3Object": {
            "Bucket": "bucket",
            "Name": "input.jpg"
        }
    },
    "MaxFaces": 2,
    "FaceMatchThreshold": 99
}
```

## SearchFacesByImage resposta da operação
<a name="searchfacesbyimage-operation-response"></a>

Dada uma determinada imagem de entrada (.jpeg ou .png), a operação primeiro detecta a face na imagem de entrada e, em seguida, pesquisa faces semelhantes na coleção de faces especificada. 

**nota**  
Se detectar várias faces na imagem de entrada, o serviço usará a maior face detectada para pesquisar a coleção de faces.

A operação retorna uma matriz de correspondências de face encontradas e informações sobre a face de entrada. Isso inclui informações como a caixa delimitadora, além do valor que indica o nível de confiança da caixa delimitadora que contém uma face. 

Por padrão, `SearchFacesByImage` retorna faces nas quais o algoritmo detecta semelhança maior que 80%. A semelhança indica o nível de proximidade da face com a face de entrada. Você também pode usar `FaceMatchThreshold` para especificar um valor diferente. Para cada correspondência de face encontrada, a resposta inclui metadados de semelhança e face, conforme mostrado na seguinte resposta de exemplo: 

```
{
    "FaceMatches": [
        {
            "Face": {
                "BoundingBox": {
                    "Height": 0.06333330273628235,
                    "Left": 0.1718519926071167,
                    "Top": 0.7366669774055481,
                    "Width": 0.11061699688434601
                },
                "Confidence": 100,
                "ExternalImageId": "input.jpg",
                "FaceId": "578e2e1b-d0b0-493c-aa39-ba476a421a34",
                "ImageId": "9ba38e68-35b6-5509-9d2e-fcffa75d1653"
            },
            "Similarity": 99.9764175415039
        }
    ],
    "FaceModelVersion": "3.0",
    "SearchedFaceBoundingBox": {
        "Height": 0.06333333253860474,
        "Left": 0.17185185849666595,
        "Top": 0.7366666793823242,
        "Width": 0.11061728745698929
    },
    "SearchedFaceConfidence": 99.99999237060547
}
```

# Pesquisando usuários (ID facial/ID de usuário)
<a name="search-users"></a>

Você pode usar a [SearchUsers](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_SearchUsers.html)operação para pesquisar usuários em uma coleção especificada que correspondam a uma ID facial ou ID de usuário fornecida. A operação lista os retornados `UserIds` classificados pela pontuação de similaridade mais alta acima da solicitada UserMatchThreshold. O ID do usuário é criado na CreateUsers operação. Para obter mais informações, consulte [Gerenciar usuários em uma coleção](managing-face-collections.md#collections-manage-users).

**Para pesquisar usuários (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `SearchUsers`.

------
#### [ Java ]

   Este exemplo de Java pesquisa os usuários em uma coleção usando a operação `SearchUsers`.

   ```
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.UserMatch;
   import com.amazonaws.services.rekognition.model.SearchUsersRequest;
   import com.amazonaws.services.rekognition.model.SearchUsersResult;
   import com.amazonaws.services.rekognition.model.UserMatch;
   
   public class SearchUsers {
       //Replace collectionId and faceId with the values you want to use.
   
       public static final String collectionId = "MyCollection";
       public static final String faceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
   
       public static final String userd = 'demo-user';
   
       public static void main(String[] args) throws Exception {
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
           // Search collection for faces matching the user id.
           SearchUsersRequest request = new SearchUsersRequest()
                   .withCollectionId(collectionId)
                   .withUserId(userId);
   
           SearchUsersResult result =
                   rekognitionClient.searchUsers(request);
   
           System.out.println("Printing first search result with matched user and similarity score");
           for (UserMatch match: result.getUserMatches()) {
               System.out.println(match.getUser().getUserId() + " with similarity score " + match.getSimilarity());
           }
   
           // Search collection for faces matching the face id.
           SearchUsersRequest request1 = new SearchUsersRequest()
                   .withCollectionId(collectionId)
                   .withFaceId(faceId);
   
           SearchUsersResult result1 =
                   rekognitionClient.searchUsers(request1);
   
           System.out.println("Printing second search result with matched user and similarity score");
           for (UserMatch match: result1.getUserMatches()) {
               System.out.println(match.getUser().getUserId() + " with similarity score " + match.getSimilarity());
           }
       }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando pesquisa os usuários em uma coleção com a `SearchUsers` operação.

   ```
   aws rekognition search-users --face-id face-id --collection-id collection-id --region region-name
   ```

------
#### [ Python ]

   O exemplo a seguir pesquisa os usuários em uma coleção com a operação `SearchUsers`.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def search_users_by_face_id(collection_id, face_id):
       """
       SearchUsers operation with face ID provided as the search source
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param face_id: The ID of the face in the collection to search for.
   
       :return: response of SearchUsers API
       """
       logger.info(f'Searching for users using a face-id: {face_id}')
       try:
           response = client.search_users(
               CollectionId=collection_id,
               FaceId=face_id
           )
           print(f'- found {len(response["UserMatches"])} matches')
           print([f'- {x["User"]["UserId"]} - {x["Similarity"]}%' for x in response["UserMatches"]])
       except ClientError:
           logger.exception(f'Failed to perform SearchUsers with given face id: {face_id}')
           raise
       else:
           print(response)
           return response
   
   def search_users_by_user_id(collection_id, user_id):
       """
       SearchUsers operation with user ID provided as the search source
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param user_id: The ID of the user in the collection to search for.
   
       :return: response of SearchUsers API
       """
       logger.info(f'Searching for users using a user-id: {user_id}')
       try:
           response = client.search_users(
               CollectionId=collection_id,
               UserId=user_id
           )
           print(f'- found {len(response["UserMatches"])} matches')
           print([f'- {x["User"]["UserId"]} - {x["Similarity"]}%' for x in response["UserMatches"]])
       except ClientError:
           logger.exception(f'Failed to perform SearchUsers with given face id: {user_id}')
           raise
       else:
           print(response)
           return response
   
   def main():
       collection_id = "collection-id"
       user_id = "user-id"
       face_id = "face_id"
       search_users_by_face_id(collection_id, face_id)
       search_users_by_user_id(collection_id, user_id)
   
   if __name__ == "__main__":
       main()
   ```

------

## SearchUsers solicitação de operação
<a name="search-users-request"></a>

Com um FaceID ou ID de usuário SearchUsers , pesquisa correspondências de usuário no CollectionID especificado. Por padrão, SearchUsers retorna Usuário IDs para o qual a pontuação de similaridade é maior que 80%. A semelhança indica até que ponto o UserID corresponde ao FaceID ou UserID fornecido. Se vários usuários IDs forem retornados, eles serão listados na ordem da maior pontuação de similaridade para a menor. Opcionalmente, você pode usar o UserMatchThreshold para especificar um valor diferente. Para obter mais informações, consulte [Gerenciar usuários em uma coleção](managing-face-collections.md#collections-manage-users). 

Veja a seguir um exemplo de uma SearchUsers solicitação usando`UserId`:

```
{
   "CollectionId": "MyCollection",
   "UserId": "demoUser1",
   "MaxUsers": 2,
   "UserMatchThreshold": 99
}
```

Veja a seguir um exemplo de uma SearchUsers solicitação usando`FaceId`:

```
{
    "CollectionId": "MyCollection",
    "FaceId": "bff43c40-cfa7-4b94-bed8-8a08b2205107",
    "MaxUsers": 2,
    "UserMatchThreshold": 99
}
```

## SearchUsers resposta da operação
<a name="search-users-response"></a>

Se pesquisar com um`FaceId`, a resposta para SearchUsers inclui o `FaceId` para`SearchedFace`, bem como uma lista de `UserMatches` e o `UserId` e `UserStatus` para cada usuário.

```
{
    "SearchedFace": {
        "FaceId": "bff43c40-cfa7-4b94-bed8-8a08b2205107"
    }, 
    "UserMatches": [
        {
            "User": {
                "UserId": "demoUser1", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 100.0
        }, 
        {
            "User": {
                "UserId": "demoUser2", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 99.97946166992188
        }
    ], 
    "FaceModelVersion": "6"
}
```

Se estiver pesquisando com a`UserId`, a resposta `UserId` para SearchUsers inclui a para`SearchedUser`, além dos outros elementos de resposta.

```
{
    "SearchedUser": {
        "UserId": "demoUser1"
    }, 
    "UserMatches": [
        {
            "User": {
                "UserId": "demoUser2", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 99.97946166992188
        }
    ], 
    "FaceModelVersion": "6"
}
```

# Pesquisar usuários (imagem)
<a name="search-users-by-image"></a>

`SearchUsersByImage`pesquisa o CollectionID especificado em busca de usuários em uma coleção que correspondam ao maior rosto detectado em uma imagem fornecida. Por padrão, SearchUsersByImage retorna Usuário IDs para o qual a pontuação de similaridade é maior que 80%. A semelhança indica até que ponto a ID de usuário corresponde à maior face detectada na imagem fornecida. Se vários usuários IDs forem retornados, eles serão listados na ordem da maior pontuação de similaridade para a menor. Opcionalmente, você pode usar o UserMatchThreshold para especificar um valor diferente. Para obter mais informações, consulte [Gerenciar usuários em uma coleção](managing-face-collections.md#collections-manage-users). 



**Para pesquisar usuários por imagem (SDK)**

1. Se ainda não tiver feito isso:

   1. Crie ou atualize um usuário com permissões `AmazonRekognitionFullAccess`. Para obter mais informações, consulte [Etapa 1: Configure uma conta da AWS e crie um usuário](setting-up.md#setting-up-iam).

   1. Instale e configure o AWS CLI e AWS SDKs o. Para obter mais informações, consulte [Etapa 2: configurar o AWS CLI e AWS SDKs](setup-awscli-sdk.md).

1. Use os exemplos a seguir para chamar a operação `SearchUsersByImage`.

------
#### [ Java ]

   Este exemplo de Java pesquisa os usuários em uma coleção com base em uma imagem de entrada, usando a operação `SearchUsersByImage`.

   ```
   import com.amazonaws.services.rekognition.AmazonRekognition;
   import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
   import com.amazonaws.services.rekognition.model.Image;
   import com.amazonaws.services.rekognition.model.S3Object;
   import com.amazonaws.services.rekognition.model.SearchUsersByImageRequest;
   import com.amazonaws.services.rekognition.model.SearchUsersByImageResult;
   import com.amazonaws.services.rekognition.model.UserMatch;
   
   
   public class SearchUsersByImage {
       //Replace bucket, collectionId and photo with your values.
       public static final String collectionId = "MyCollection";
       public static final String s3Bucket = "bucket";
       public static final String s3PhotoFileKey = "input.jpg";
   
       public static void main(String[] args) throws Exception {
   
           AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
   
   
           // Get an image object from S3 bucket.
           Image image = new Image()
                   .withS3Object(new S3Object()
                           .withBucket(s3Bucket)
                           .withName(s3PhotoFileKey));
   
           // Search collection for users similar to the largest face in the image.
           SearchUsersByImageRequest request = new SearchUsersByImageRequest()
                   .withCollectionId(collectionId)
                   .withImage(image)
                   .withUserMatchThreshold(70F)
                   .withMaxUsers(2);
   
           SearchUsersByImageResult result =
                   rekognitionClient.searchUsersByImage(request);
   
           System.out.println("Printing search result with matched user and similarity score");
           for (UserMatch match: result.getUserMatches()) {
               System.out.println(match.getUser().getUserId() + " with similarity score " + match.getSimilarity());
           }
       }
   }
   ```

------
#### [ AWS CLI ]

   Esse AWS CLI comando pesquisa os usuários em uma coleção com base em uma imagem de entrada, com a `SearchUsersByImage` operação.

   ```
   aws rekognition search-users-by-image --image '{"S3Object":{"Bucket":"s3BucketName","Name":"file-name"}}' --collection-id MyCollectionId --region region-name
   ```

------
#### [ Python ]

   O exemplo a seguir pesquisa os usuários em uma coleção com base em uma imagem de entrada, com a operação `SearchUsersByImage`.

   ```
   # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   import boto3
   from botocore.exceptions import ClientError
   import logging
   import os
   
   logger = logging.getLogger(__name__)
   session = boto3.Session(profile_name='profile-name')
   client = session.client('rekognition')
   
   def load_image(file_name):
       """
       helper function to load the image for indexFaces call from local disk
   
       :param image_file_name: The image file location that will be used by indexFaces call.
       :return: The Image in bytes
       """
       print(f'- loading image: {file_name}')
       with open(file_name, 'rb') as file:
           return {'Bytes': file.read()}
   
   def search_users_by_image(collection_id, image_file):
       """
       SearchUsersByImage operation with user ID provided as the search source
   
       :param collection_id: The ID of the collection where user and faces are stored.
       :param image_file: The image that contains the reference face to search for.
   
       :return: response of SearchUsersByImage API
       """
       logger.info(f'Searching for users using an image: {image_file}')
       try:
           response = client.search_users_by_image(
               CollectionId=collection_id,
               Image=load_image(image_file)
           )
           print(f'- found {len(response["UserMatches"])} matches')
           print([f'- {x["User"]["UserId"]} - {x["Similarity"]}%' for x in response["UserMatches"]])
       except ClientError:
           logger.exception(f'Failed to perform SearchUsersByImage with given image: {image_file}')
           raise
       else:
           print(response)
           return response
   
   def main():
       collection_id = "collection-id"
       IMAGE_SEARCH_SOURCE = os.getcwd() + '/image_path'
       search_users_by_image(collection_id, IMAGE_SEARCH_SOURCE)
   
   if __name__ == "__main__":
       main()
   ```

------

## SearchUsersByImage solicitação de operação
<a name="search-users-by-image-request"></a>

A solicitação `SearchUsersByImage` inclui a coleção a ser pesquisada e a localização da imagem de origem. Neste exemplo, a imagem de origem é armazenada em um bucket do Amazon S3 (`S3Object`). Também são especificados o número máximo de usuários a serem retornados (`MaxUsers`) e a confiança mínima que deve ser correspondida para que um usuário seja retornado (`UserMatchThreshold`).

```
{
    "CollectionId": "MyCollection",
    "Image": {
        "S3Object": {
            "Bucket": "bucket",
            "Name": "input.jpg"
        }
    },
    "MaxUsers": 2,
    "UserMatchThreshold": 99
}
```

## SearchUsersByImage resposta da operação
<a name="search-users-by-image-response"></a>

A resposta para `SearchUsersByImage` inclui um `FaceDetail` objeto para o`SearchedFace`, bem como uma lista de UserMatches com o `UserId``Similarity`, e `UserStatus` para cada um. Se a imagem de entrada contiver mais de uma face, uma lista de também UnsearchedFaces será retornada.

```
{
    "SearchedFace": {
        "FaceDetail": {
            "BoundingBox": {
                "Width": 0.23692893981933594, 
                "Top": 0.19235000014305115, 
                "Left": 0.39177176356315613, 
                "Height": 0.5437348484992981
            }
        }
    }, 
    "UserMatches": [
        {
            "User": {
                "UserId": "demoUser1", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 100.0
        }, 
        {
            "User": {
                "UserId": "demoUser2", 
                "UserStatus": "ACTIVE"
            }, 
            "Similarity": 99.97946166992188
        }
    ], 
    "FaceModelVersion": "6", 
    "UnsearchedFaces": [
        {
            "FaceDetails": {
                "BoundingBox": {
                    "Width": 0.031677018851041794, 
                    "Top": 0.5593535900115967, 
                    "Left": 0.6102562546730042, 
                    "Height": 0.0682177022099495
                }
            }, 
            "Reasons": [
                "FACE_NOT_LARGEST"
            ]
        }, 
        {
            "FaceDetails": {
                "BoundingBox": {
                    "Width": 0.03254449740052223, 
                    "Top": 0.6080358028411865, 
                    "Left": 0.516062319278717, 
                    "Height": 0.06347997486591339
                }
            }, 
            "Reasons": [
                "FACE_NOT_LARGEST"
            ]
        }
    ]
}
```

# Pesquisanda faces em vídeos armazenados
<a name="procedure-person-search-videos"></a>

Você pode pesquisar uma coleção de faces que corresponda a faces de pessoas detectadas em um vídeo armazenado ou em um vídeo de streaming. Esta seção aborda a pesquisa de faces em um vídeo armazenado. Para obter informações sobre a pesquisa de faces em um vídeo de streaming, consulte [Trabalhando com eventos de streaming de vídeo](streaming-video.md).

As faces que você pesquisa devem primeiro ser indexadas em uma coleção usando [IndexFaces](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_IndexFaces.html). Para obter mais informações, consulte [Adicionar faces a uma coleção](add-faces-to-collection-procedure.md). 

A pesquisa facial do Amazon Rekognition Video segue o mesmo fluxo de trabalho assíncrono de outras operações de vídeo do Amazon Rekognition Video que analisam vídeos armazenados em um bucket do Amazon S3. Para começar a pesquisar rostos em um vídeo armazenado, ligue [StartFaceSearch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartFaceSearch.html)e forneça o ID da coleção que você deseja pesquisar. O Amazon Rekognition Video publica o status de conclusão da análise de vídeo em um tópico do Amazon Simple Notification Service (Amazon SNS). Se a análise do vídeo for bem-sucedida, chame [GetFaceSearch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_GeFaceSearch.html) para obter os resultados de pesquisa. Para obter mais informações sobre como iniciar uma análise de vídeo e obter os resultados, consulte [Chamando as operações de vídeo do Amazon Rekognition Video](api-video.md). 

O procedimento a seguir mostra como pesquisar uma coleção de faces que correspondem às faces de pessoas detectadas em um vídeo. O procedimento também mostra como obter o rastreamento de dados das pessoas correspondidas no vídeo. O procedimento expande o código em [Análise de um vídeo armazenado em um bucket do Amazon S3 com Java ou Python (SDK)](video-analyzing-with-sqs.md), que usa uma fila do Amazon Simple Queue Service (Amazon SQS) para obter o status de conclusão de uma solicitação de análise de vídeo. 

**Para pesquisar faces correspondentes em um vídeo (SDK)**

1. [Crie uma coleção](create-collection-procedure.md).

1. [Indexe uma face na coleção](add-faces-to-collection-procedure.md).

1. Execute [Análise de um vídeo armazenado em um bucket do Amazon S3 com Java ou Python (SDK)](video-analyzing-with-sqs.md).

1. Adicione o código a seguir à classe `VideoDetect` criada por você na etapa 3.

------
#### [ Java ]

   ```
      //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
      //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
          //Face collection search in video ==================================================================
          private static void StartFaceSearchCollection(String bucket, String video, String collection) throws Exception{
   
           NotificationChannel channel= new NotificationChannel()
                   .withSNSTopicArn(snsTopicArn)
                   .withRoleArn(roleArn);
   
           StartFaceSearchRequest req = new StartFaceSearchRequest()
                   .withCollectionId(collection)
                   .withVideo(new Video()
                           .withS3Object(new S3Object()
                                   .withBucket(bucket)
                                   .withName(video)))
                   .withNotificationChannel(channel);
   
   
   
           StartFaceSearchResult startPersonCollectionSearchResult = rek.startFaceSearch(req);
           startJobId=startPersonCollectionSearchResult.getJobId();
   
       } 
   
       //Face collection search in video ==================================================================
       private static void GetFaceSearchCollectionResults() throws Exception{
   
          GetFaceSearchResult faceSearchResult=null;
          int maxResults=10;
          String paginationToken=null;
   
          do {
   
              if (faceSearchResult !=null){
                  paginationToken = faceSearchResult.getNextToken();
              }
   
   
              faceSearchResult  = rek.getFaceSearch(
                      new GetFaceSearchRequest()
                      .withJobId(startJobId)
                      .withMaxResults(maxResults)
                      .withNextToken(paginationToken)
                      .withSortBy(FaceSearchSortBy.TIMESTAMP)
                      );
   
   
              VideoMetadata videoMetaData=faceSearchResult.getVideoMetadata();
   
              System.out.println("Format: " + videoMetaData.getFormat());
              System.out.println("Codec: " + videoMetaData.getCodec());
              System.out.println("Duration: " + videoMetaData.getDurationMillis());
              System.out.println("FrameRate: " + videoMetaData.getFrameRate());
              System.out.println();      
   
   
              //Show search results
              List<PersonMatch> matches= 
                      faceSearchResult.getPersons();
   
              for (PersonMatch match: matches) { 
                  long milliSeconds=match.getTimestamp();
                  System.out.print("Timestamp: " + Long.toString(milliSeconds));
                  System.out.println(" Person number: " + match.getPerson().getIndex());
                  List <FaceMatch> faceMatches = match.getFaceMatches();
                  if (faceMatches != null) {
                      System.out.println("Matches in collection...");
                      for (FaceMatch faceMatch: faceMatches){
                          Face face=faceMatch.getFace();
                          System.out.println("Face Id: "+ face.getFaceId());
                          System.out.println("Similarity: " + faceMatch.getSimilarity().toString());
                          System.out.println();
                      }
                  }
                  System.out.println();           
              } 
   
              System.out.println(); 
   
          } while (faceSearchResult !=null && faceSearchResult.getNextToken() != null);
   
      }
   ```

   Na função `main`, substitua as linhas: 

   ```
           StartLabelDetection(bucket, video);
   
           if (GetSQSMessageSuccess()==true)
           	GetLabelDetectionResults();
   ```

   por:

   ```
           String collection="collection";
           StartFaceSearchCollection(bucket, video, collection);
   
           if (GetSQSMessageSuccess()==true)
           	GetFaceSearchCollectionResults();
   ```

------
#### [ Java V2 ]

   Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/VideoDetectFaces.java).

   ```
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.*;
   import java.util.List;
   
   /**
    * Before running this Java V2 code example, set up your development
    * environment, including your credentials.
    *
    * For more information, see the following documentation topic:
    *
    * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
    */
   public class VideoDetectFaces {
       private static String startJobId = "";
   
       public static void main(String[] args) {
           final String usage = """
   
                   Usage:    <bucket> <video> <topicArn> <roleArn>
   
                   Where:
                      bucket - The name of the bucket in which the video is located (for example, (for example, myBucket).\s
                      video - The name of video (for example, people.mp4).\s
                      topicArn - The ARN of the Amazon Simple Notification Service (Amazon SNS) topic.\s
                      roleArn - The ARN of the AWS Identity and Access Management (IAM) role to use.\s
                   """;
   
           if (args.length != 4) {
               System.out.println(usage);
               System.exit(1);
           }
   
           String bucket = args[0];
           String video = args[1];
           String topicArn = args[2];
           String roleArn = args[3];
   
           Region region = Region.US_EAST_1;
           RekognitionClient rekClient = RekognitionClient.builder()
                   .region(region)
                   .build();
   
           NotificationChannel channel = NotificationChannel.builder()
                   .snsTopicArn(topicArn)
                   .roleArn(roleArn)
                   .build();
   
           startFaceDetection(rekClient, channel, bucket, video);
           getFaceResults(rekClient);
           System.out.println("This example is done!");
           rekClient.close();
       }
   
       public static void startFaceDetection(RekognitionClient rekClient,
               NotificationChannel channel,
               String bucket,
               String video) {
           try {
               S3Object s3Obj = S3Object.builder()
                       .bucket(bucket)
                       .name(video)
                       .build();
   
               Video vidOb = Video.builder()
                       .s3Object(s3Obj)
                       .build();
   
               StartFaceDetectionRequest faceDetectionRequest = StartFaceDetectionRequest.builder()
                       .jobTag("Faces")
                       .faceAttributes(FaceAttributes.ALL)
                       .notificationChannel(channel)
                       .video(vidOb)
                       .build();
   
               StartFaceDetectionResponse startLabelDetectionResult = rekClient.startFaceDetection(faceDetectionRequest);
               startJobId = startLabelDetectionResult.jobId();
   
           } catch (RekognitionException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
   
       public static void getFaceResults(RekognitionClient rekClient) {
           try {
               String paginationToken = null;
               GetFaceDetectionResponse faceDetectionResponse = null;
               boolean finished = false;
               String status;
               int yy = 0;
   
               do {
                   if (faceDetectionResponse != null)
                       paginationToken = faceDetectionResponse.nextToken();
   
                   GetFaceDetectionRequest recognitionRequest = GetFaceDetectionRequest.builder()
                           .jobId(startJobId)
                           .nextToken(paginationToken)
                           .maxResults(10)
                           .build();
   
                   // Wait until the job succeeds.
                   while (!finished) {
   
                       faceDetectionResponse = rekClient.getFaceDetection(recognitionRequest);
                       status = faceDetectionResponse.jobStatusAsString();
   
                       if (status.compareTo("SUCCEEDED") == 0)
                           finished = true;
                       else {
                           System.out.println(yy + " status is: " + status);
                           Thread.sleep(1000);
                       }
                       yy++;
                   }
   
                   finished = false;
   
                   // Proceed when the job is done - otherwise VideoMetadata is null.
                   VideoMetadata videoMetaData = faceDetectionResponse.videoMetadata();
                   System.out.println("Format: " + videoMetaData.format());
                   System.out.println("Codec: " + videoMetaData.codec());
                   System.out.println("Duration: " + videoMetaData.durationMillis());
                   System.out.println("FrameRate: " + videoMetaData.frameRate());
                   System.out.println("Job");
   
                   // Show face information.
                   List<FaceDetection> faces = faceDetectionResponse.faces();
                   for (FaceDetection face : faces) {
                       String age = face.face().ageRange().toString();
                       String smile = face.face().smile().toString();
                       System.out.println("The detected face is estimated to be"
                               + age + " years old.");
                       System.out.println("There is a smile : " + smile);
                   }
   
               } while (faceDetectionResponse != null && faceDetectionResponse.nextToken() != null);
   
           } catch (RekognitionException | InterruptedException e) {
               System.out.println(e.getMessage());
               System.exit(1);
           }
       }
   }
   ```

------
#### [ Python ]

   ```
   #Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
       # ============== Face Search ===============
       def StartFaceSearchCollection(self,collection):
           response = self.rek.start_face_search(Video={'S3Object':{'Bucket':self.bucket,'Name':self.video}},
               CollectionId=collection,
               NotificationChannel={'RoleArn':self.roleArn, 'SNSTopicArn':self.snsTopicArn})
           
           self.startJobId=response['JobId']
           
           print('Start Job Id: ' + self.startJobId)
   
   
       def GetFaceSearchCollectionResults(self):
           maxResults = 10
           paginationToken = ''
   
           finished = False
   
           while finished == False:
               response = self.rek.get_face_search(JobId=self.startJobId,
                                           MaxResults=maxResults,
                                           NextToken=paginationToken)
   
               print(response['VideoMetadata']['Codec'])
               print(str(response['VideoMetadata']['DurationMillis']))
               print(response['VideoMetadata']['Format'])
               print(response['VideoMetadata']['FrameRate'])
   
               for personMatch in response['Persons']:
                   print('Person Index: ' + str(personMatch['Person']['Index']))
                   print('Timestamp: ' + str(personMatch['Timestamp']))
   
                   if ('FaceMatches' in personMatch):
                       for faceMatch in personMatch['FaceMatches']:
                           print('Face ID: ' + faceMatch['Face']['FaceId'])
                           print('Similarity: ' + str(faceMatch['Similarity']))
                   print()
               if 'NextToken' in response:
                   paginationToken = response['NextToken']
               else:
                   finished = True
               print()
   ```

   Na função `main`, substitua as linhas:

   ```
       analyzer.StartLabelDetection()
       if analyzer.GetSQSMessageSuccess()==True:
           analyzer.GetLabelDetectionResults()
   ```

   por:

   ```
       collection='tests'
       analyzer.StartFaceSearchCollection(collection)
       
       if analyzer.GetSQSMessageSuccess()==True:
           analyzer.GetFaceSearchCollectionResults()
   ```

------

   Se você já tiver executado um exemplo de vídeo diferente de [Análise de um vídeo armazenado em um bucket do Amazon S3 com Java ou Python (SDK)](video-analyzing-with-sqs.md), o código a ser substituído poderá ser diferente.

1. Altere o valor de `collection` para o nome da coleção criada por você na etapa 1.

1. Execute o código. Uma lista de pessoas no vídeo cujas faces correspondem às da coleção de entrada é exibida. Os dados de rastreamento de cada pessoa correspondida também são exibidos.

## GetFaceSearch resposta da operação
<a name="searchfacesvideo-operation-response"></a>

Esta é uma resposta JSON de exemplo de `GetFaceSearch`.

A resposta inclui uma matriz das pessoas (`Persons`) detectadas no vídeo cujas faces correspondem a uma face na coleção de entrada. A cada vez que a pessoa é correspondida no vídeo, existe um elemento da matriz, [PersonMatch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_PersonMatch.html). Cada `PersonMatch` inclui uma matriz de correspondências de faces da coleção de entrada, [FaceMatch](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_FaceMatch.html), informações sobre a pessoa correspondente, [PersonDetail](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_PersonDetail.html), e a hora em que a pessoa foi correspondida no vídeo. 

```
{
    "JobStatus": "SUCCEEDED",
    "NextToken": "IJdbzkZfvBRqj8GPV82BPiZKkLOGCqDIsNZG/gQsEE5faTVK9JHOz/xxxxxxxxxxxxxxx",
    "Persons": [
        {
            "FaceMatches": [
                {
                    "Face": {
                        "BoundingBox": {
                            "Height": 0.527472972869873,
                            "Left": 0.33530598878860474,
                            "Top": 0.2161169946193695,
                            "Width": 0.35503000020980835
                        },
                        "Confidence": 99.90239715576172,
                        "ExternalImageId": "image.PNG",
                        "FaceId": "a2f2e224-bfaa-456c-b360-7c00241e5e2d",
                        "ImageId": "eb57ed44-8d8d-5ec5-90b8-6d190daff4c3"
                    },
                    "Similarity": 98.40909576416016
                }
            ],
            "Person": {
                "BoundingBox": {
                    "Height": 0.8694444298744202,
                    "Left": 0.2473958283662796,
                    "Top": 0.10092592239379883,
                    "Width": 0.49427083134651184
                },
                "Face": {
                    "BoundingBox": {
                        "Height": 0.23000000417232513,
                        "Left": 0.42500001192092896,
                        "Top": 0.16333332657814026,
                        "Width": 0.12937499582767487
                    },
                    "Confidence": 99.97504425048828,
                    "Landmarks": [
                        {
                            "Type": "eyeLeft",
                            "X": 0.46415066719055176,
                            "Y": 0.2572723925113678
                        },
                        {
                            "Type": "eyeRight",
                            "X": 0.5068183541297913,
                            "Y": 0.23705792427062988
                        },
                        {
                            "Type": "nose",
                            "X": 0.49765899777412415,
                            "Y": 0.28383663296699524
                        },
                        {
                            "Type": "mouthLeft",
                            "X": 0.487221896648407,
                            "Y": 0.3452930748462677
                        },
                        {
                            "Type": "mouthRight",
                            "X": 0.5142884850502014,
                            "Y": 0.33167609572410583
                        }
                    ],
                    "Pose": {
                        "Pitch": 15.966927528381348,
                        "Roll": -15.547388076782227,
                        "Yaw": 11.34195613861084
                    },
                    "Quality": {
                        "Brightness": 44.80223083496094,
                        "Sharpness": 99.95819854736328
                    }
                },
                "Index": 0
            },
            "Timestamp": 0
        },
        {
            "Person": {
                "BoundingBox": {
                    "Height": 0.2177777737379074,
                    "Left": 0.7593749761581421,
                    "Top": 0.13333334028720856,
                    "Width": 0.12250000238418579
                },
                "Face": {
                    "BoundingBox": {
                        "Height": 0.2177777737379074,
                        "Left": 0.7593749761581421,
                        "Top": 0.13333334028720856,
                        "Width": 0.12250000238418579
                    },
                    "Confidence": 99.63436889648438,
                    "Landmarks": [
                        {
                            "Type": "eyeLeft",
                            "X": 0.8005779385566711,
                            "Y": 0.20915353298187256
                        },
                        {
                            "Type": "eyeRight",
                            "X": 0.8391435146331787,
                            "Y": 0.21049551665782928
                        },
                        {
                            "Type": "nose",
                            "X": 0.8191410899162292,
                            "Y": 0.2523227035999298
                        },
                        {
                            "Type": "mouthLeft",
                            "X": 0.8093273043632507,
                            "Y": 0.29053622484207153
                        },
                        {
                            "Type": "mouthRight",
                            "X": 0.8366993069648743,
                            "Y": 0.29101791977882385
                        }
                    ],
                    "Pose": {
                        "Pitch": 3.165884017944336,
                        "Roll": 1.4182015657424927,
                        "Yaw": -11.151537895202637
                    },
                    "Quality": {
                        "Brightness": 28.910892486572266,
                        "Sharpness": 97.61507415771484
                    }
                },
                "Index": 1
            },
            "Timestamp": 0
        },
        {
            "Person": {
                "BoundingBox": {
                    "Height": 0.8388888835906982,
                    "Left": 0,
                    "Top": 0.15833333134651184,
                    "Width": 0.2369791716337204
                },
                "Face": {
                    "BoundingBox": {
                        "Height": 0.20000000298023224,
                        "Left": 0.029999999329447746,
                        "Top": 0.2199999988079071,
                        "Width": 0.11249999701976776
                    },
                    "Confidence": 99.85971069335938,
                    "Landmarks": [
                        {
                            "Type": "eyeLeft",
                            "X": 0.06842322647571564,
                            "Y": 0.3010137975215912
                        },
                        {
                            "Type": "eyeRight",
                            "X": 0.10543643683195114,
                            "Y": 0.29697132110595703
                        },
                        {
                            "Type": "nose",
                            "X": 0.09569807350635529,
                            "Y": 0.33701086044311523
                        },
                        {
                            "Type": "mouthLeft",
                            "X": 0.0732642263174057,
                            "Y": 0.3757539987564087
                        },
                        {
                            "Type": "mouthRight",
                            "X": 0.10589495301246643,
                            "Y": 0.3722417950630188
                        }
                    ],
                    "Pose": {
                        "Pitch": -0.5589138865470886,
                        "Roll": -5.1093974113464355,
                        "Yaw": 18.69594955444336
                    },
                    "Quality": {
                        "Brightness": 43.052337646484375,
                        "Sharpness": 99.68138885498047
                    }
                },
                "Index": 2
            },
            "Timestamp": 0
        }......

    ],
    "VideoMetadata": {
        "Codec": "h264",
        "DurationMillis": 67301,
        "Format": "QuickTime / MOV",
        "FrameHeight": 1080,
        "FrameRate": 29.970029830932617,
        "FrameWidth": 1920
    }
}
```

# Pesquisando faces em uma coleção em um vídeo de streaming
<a name="collections-streaming"></a>

Você pode usar o Amazon Rekognition Video para detectar e reconhecer faces de uma coleção em streaming de vídeo. Com o Amazon Rekognition Video, você pode criar um [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)processador de streaming () para iniciar e gerenciar a análise do streaming de vídeo. 

Para detectar um rosto conhecido em um stream de vídeo (pesquisa facial), o Amazon Rekognition Video usa o Amazon Kinesis Video Streams para receber e processar um stream de vídeo. Os resultados da análise são enviados do Amazon Rekognition Video para um fluxo de dados do Kinesis e depois lidos pelo seu aplicativo cliente. 

Para usar o Amazon Rekognition Video com streaming de vídeo, seu aplicativo precisa implementar o seguinte:
+ Um stream de vídeo do Kinesis para enviar streaming de vídeo para o Amazon Rekognition Video. Para obter mais informações, consulte o [Guia do desenvolvedor do Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html). 
+ Um processador de stream do Amazon Rekognition Video para gerenciar a análise do streaming de vídeo. Para obter mais informações, consulte [Visão geral das operações do processador de stream do Amazon Rekognition Video](streaming-video.md#using-rekognition-video-stream-processor).
+ Um consumidor de fluxo de dados do Kinesis para ler os resultados da análise que o Amazon Rekognition Video envia para o fluxo de dados do Kinesis. Para obter mais informações, consulte [Consumidores do Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-consumers.html). 

Esta seção contém informações sobre como escrever um aplicativo que cria o stream de vídeo do Kinesis e outros recursos necessários, transmite vídeos para o Amazon Rekognition Video e recebe os resultados da análise.

**Topics**
+ [Configurando seus recursos do Amazon Rekognition Video e do Amazon Kinesis](setting-up-your-amazon-rekognition-streaming-video-resources.md)
+ [Pesquisanda faces em um streaming de vídeo](rekognition-video-stream-processor-search-faces.md)
+ [Streaming usando um GStreamer plug-in](streaming-using-gstreamer-plugin.md)
+ [Solução de problemas de streaming de vídeo](streaming-video-troubleshooting.md)

# Configurando seus recursos do Amazon Rekognition Video e do Amazon Kinesis
<a name="setting-up-your-amazon-rekognition-streaming-video-resources"></a>

 Os procedimentos a seguir descrevem as etapas que você executa para provisionar o stream de vídeo do Kinesis e outros recursos usados para reconhecer faces em um streaming de vídeo.

## Pré-requisitos
<a name="streaming-video-prerequisites"></a>

Para executar esse procedimento, você precisa ter o AWS SDK para Java instalado. Para obter mais informações, consulte [Comece a usar o Amazon Rekognition](getting-started.md). O Conta da AWS que você usa deve ter permissões de acesso à API do Amazon Rekognition. Para obter mais informações, consulte [Ações definidas pelo Amazon Rekognition](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonrekognition.html#amazonrekognition-actions-as-permissions) no *Guia do usuário do IAM*. 

**Para reconhecer faces em um fluxo de vídeo (AWS SDK)**

1. Se você ainda não o fez, crie um perfil de serviço do IAM para dar ao Amazon Rekognition Video acesse aos seus streams de vídeo do Kinesis e aos seus streams de dados do Kinesis. Anote o ARN. Para obter mais informações, consulte [Dando acesso a streams usando AmazonRekognitionServiceRole](api-streaming-video-roles.md#api-streaming-video-roles-all-stream).

1. [Crie uma coleção](create-collection-procedure.md) e anote o identificador da coleção que você usou.

1. [Faça a indexação das faces](add-faces-to-collection-procedure.md) que deseja pesquisar na coleção que você criou na etapa 2.

1. [Crie um stream de vídeo do Kinesis](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html) e anote o nome de recurso da Amazon (ARN) do stream.

1. [Crie um fluxo de dados do Kinesis](https://docs.aws.amazon.com/streams/latest/dev/learning-kinesis-module-one-create-stream.html). Prefixe o nome do stream *AmazonRekognition*e anote o ARN do stream.

Em seguida, você pode [criar o processador de stream de pesquisa facial](rekognition-video-stream-processor-search-faces.md#streaming-video-creating-stream-processor) e [iniciar o processador de stream](rekognition-video-stream-processor-search-faces.md#streaming-video-starting-stream-processor) usando o nome do processador de stream que você escolheu.

**nota**  
 Você deve iniciar o processador de stream somente depois de verificar se você pode ingerir mídia no stream de vídeo do Kinesis. 

## Streaming de vídeo para o Amazon Rekognition Video
<a name="video-streaming-kinesisvideostreams-stream"></a>

Para transmitir vídeo para o Amazon Rekognition Video, você usa o SDK do Amazon Kinesis Video Streams para criar e usar um stream de vídeo do Kinesis. A operação `PutMedia` grava *fragmentos* de dados de vídeo em um stream de vídeo do Kinesis que o Amazon Rekognition Video consome. Cada fragmento de dados de vídeo geralmente tem de 2 a 10 segundos de duração e contém uma sequência independente de quadros de vídeo. O Amazon Rekognition Video oferece suporte a vídeos codificados em H.264, que podem ter três tipos de quadros (I, B e P). Para obter mais informações, consulte [Inter Frame](https://en.wikipedia.org/wiki/Inter_frame). O primeiro quadro no fragmento deve ser um I-frame. Um I-frame pode ser decodificado independentemente de qualquer outro quadro. 

Quando os dados de vídeo chegam ao stream de vídeo do Kinesis, o Kinesis Video Streams atribui um número exclusivo ao fragmento. Para ver um exemplo, consulte [Exemplo de PutMedia API](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-putmedia.html).
+  Se você estiver transmitindo de uma fonte codificada em Matroska (MKV), use a [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)operação para transmitir o vídeo de origem para o stream de vídeo do Kinesis que você criou. Para obter mais informações, consulte [Exemplo de PutMedia API](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-putmedia.html). 
+  Se você estiver transmitindo da câmera de um dispositivo, consulte [Streaming usando um GStreamer plug-in](streaming-using-gstreamer-plugin.md).

# Conceder ao Amazon Rekognition Video acesso aos seus recursos
<a name="api-streaming-video-roles"></a>

Você usa uma função de serviço AWS Identity and Access Management (IAM) para dar ao Amazon Rekognition Video acesso de leitura aos streams de vídeo do Kinesis. Se você estiver usando um processador de stream de pesquisa facial, você usa um perfil de serviço do IAM para dar ao Amazon Rekognition Video acesse de gravação aos fluxos de dados do Kinesis. Se você estiver usando um processador de stream de monitoramento de segurança, use os perfis do IAM para dar ao Amazon Rekognition Video acesso ao bucket do Amazon S3 e a um tópico do Amazon SNS.

## Fornecer acesso a processadores de stream de pesquisa facial
<a name="api-streaming-video-roles-single-stream"></a>

Você pode criar uma política de permissões que permita ao Amazon Rekognition Video acessar streams de vídeo individuais do Kinesis e streams de dados do Kinesis.

**Para dar ao Amazon Rekognition Video acesso a um processador de stream de pesquisa facial**

1. [ Crie uma nova política de permissões com o editor de políticas IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor) e use a política a seguir. Substitua `video-arn` pelo ARN do stream de vídeo do Kinesis desejado. Se você estiver usando um processador de stream de pesquisa facial, substitua o `data-arn` pelo ARN do fluxo de dados Kinesis desejado.

1. [Crie um perfil de serviço do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html?icmpid=docs_iam_console) ou atualize um perfil de serviço do IAM existente. Use as informações a seguir para criar o perfil de serviço do IAM:

   1. Escolha **Rekognition** como o nome de serviço.

   1. Escolha **Rekognition** para o caso de uso da função de serviço.

   1. Anexe a política de permissões que você criou na etapa 1.

1. Anote o ARN da função de serviço. Ele é necessário para iniciar as operações de análise de vídeo.

## Dando acesso a streams usando AmazonRekognitionServiceRole
<a name="api-streaming-video-roles-all-stream"></a>

 Como opção alternativa para configurar o acesso aos streams de vídeo e fluxos de dados do Kinesis, você pode usar a política de permissões da `AmazonRekognitionServiceRole`. O IAM fornece o caso de uso do perfil de serviço *Rekognition* que, quando usado com a política de permissões `AmazonRekognitionServiceRole`, pode gravar em vários streams de dados do Kinesis e ler todos os seus streams de vídeo do Kinesis. Para dar ao Amazon Rekognition Video acesso de gravação a vários streams de dados do Kinesis, você pode prefixar os nomes dos streams de dados do Kinesis com —por exemplo,. *AmazonRekognition*`AmazonRekognitionMyDataStreamName` 

**Para dar ao Amazon Rekognition Video acesso ao seu stream de vídeo do Kinesis e ao fluxo de dados do Kinesis**

1. [Crie um perfil de serviço do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html?icmpid=docs_iam_console). Use as informações a seguir para criar o perfil de serviço do IAM:

   1. Escolha **Rekognition** como o nome de serviço.

   1. Escolha **Rekognition** para o caso de uso da função de serviço.

   1. Escolha a política de **AmazonRekognitionServiceRole**permissões, que dá ao Amazon Rekognition Video acesso de gravação aos streams de dados do Kinesis *AmazonRekognition*prefixados e acesso de leitura a todos os seus streams de vídeo do Kinesis.

1. Para garantir que você Conta da AWS esteja seguro, limite o escopo do acesso do Rekognition apenas aos recursos que você está usando. Isso pode ser feito anexando uma política de confiança à suo perfil de serviço do IAM. Para obter informações sobre como fazer isso, consulte [Prevenção contra o ataque do “substituto confuso” em todos os serviços](cross-service-confused-deputy-prevention.md).

1. Observe o nome de recurso da Amazon (ARN) da função de serviço. Ele é necessário para iniciar as operações de análise de vídeo.

# Pesquisanda faces em um streaming de vídeo
<a name="rekognition-video-stream-processor-search-faces"></a>

O Amazon Rekognition Video pode pesquisar faces em uma coleção que correspondam às faces detectadas em um vídeo de streaming. Para obter mais informações sobre coleções, consulte [Pesquisa de faces em uma coleção](collections.md).

**Topics**
+ [Criação do processador de stream de pesquisa facial Amazon Rekognition Video](#streaming-video-creating-stream-processor)
+ [Iniciando o processador de stream de pesquisa facial do Amazon Rekognition Video](#streaming-video-starting-stream-processor)
+ [Usando processadores de stream para pesquisa facial (exemplo de Java V2)](#using-stream-processors-v2)
+ [Usando processadores de stream para pesquisa facial (exemplo de Java V1)](#using-stream-processors)
+ [Lendo os resultados da análise de streaming de vídeo](streaming-video-kinesis-output.md)
+ [Exibindo resultados do Rekognition com o Kinesis Video Streams localmente](displaying-rekognition-results-locally.md)
+ [Entender o registro de quadros JSON de reconhecimento facial do Kinesis](streaming-video-kinesis-output-reference.md)

O diagrama a seguir mostra como o Amazon Rekognition Video detecta e reconhece faces em um streaming de vídeo.

![\[Diagrama do fluxo de trabalho para usar o Amazon Rekognition Video para processar streams de vídeo do Amazon Kinesis.\]](http://docs.aws.amazon.com/pt_br/rekognition/latest/dg/images/VideoRekognitionStream.png)


## Criação do processador de stream de pesquisa facial Amazon Rekognition Video
<a name="streaming-video-creating-stream-processor"></a>

Antes de poder analisar um streaming de vídeo, você cria um processador de streaming de vídeo Amazon Rekognition Video (). [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html) O processador de stream contém informações sobre o fluxo de dados do Kinesis e o stream de vídeo do Kinesis. Ele também contém o identificador para a coleção que contém as faces que você deseja reconhecer no streaming de vídeo de entrada. Você também especifica um nome para o processador de fluxo. Veja a seguir um exemplo de JSON para a solicitação `CreateStreamProcessor`.

```
{
       "Name": "streamProcessorForCam",
       "Input": {
              "KinesisVideoStream": {
                     "Arn": "arn:aws:kinesisvideo:us-east-1:nnnnnnnnnnnn:stream/inputVideo"
              }
       },
       "Output": {
              "KinesisDataStream": {
                     "Arn": "arn:aws:kinesis:us-east-1:nnnnnnnnnnnn:stream/outputData"
              }
       },
       "RoleArn": "arn:aws:iam::nnnnnnnnnnn:role/roleWithKinesisPermission",
       "Settings": {
              "FaceSearch": {
                     "CollectionId": "collection-with-100-faces",
                     "FaceMatchThreshold": 85.5
              }
       }
}
```

Esta é uma resposta de exemplo de `CreateStreamProcessor`.

```
{
       “StreamProcessorArn”: “arn:aws:rekognition:us-east-1:nnnnnnnnnnnn:streamprocessor/streamProcessorForCam”
}
```

## Iniciando o processador de stream de pesquisa facial do Amazon Rekognition Video
<a name="streaming-video-starting-stream-processor"></a>

Inicie a análise de streaming de vídeo chamando [StartStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartStreamProcessor.html) com o nome do processador de fluxo que você especificou em `CreateStreamProcessor`. Veja a seguir um exemplo de JSON para a solicitação `StartStreamProcessor`.

```
{
       "Name": "streamProcessorForCam"
}
```

Se o processador de fluxo iniciar com êxito, uma resposta HTTP 200 é retornada, junto com um corpo JSON vazio.

## Usando processadores de stream para pesquisa facial (exemplo de Java V2)
<a name="using-stream-processors-v2"></a>

O código de exemplo a seguir mostra como chamar várias operações do processador de stream, como [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)e [StartStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartStreamProcessor.html), usando o AWS SDK for Java versão 2.

Esse código foi retirado do GitHub repositório de exemplos do SDK de AWS documentação. Veja o exemplo completo [aqui](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/rekognition/src/main/java/com/example/rekognition/CreateStreamProcessor.java).

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.rekognition.RekognitionClient;
import software.amazon.awssdk.services.rekognition.model.CreateStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.CreateStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.FaceSearchSettings;
import software.amazon.awssdk.services.rekognition.model.KinesisDataStream;
import software.amazon.awssdk.services.rekognition.model.KinesisVideoStream;
import software.amazon.awssdk.services.rekognition.model.ListStreamProcessorsRequest;
import software.amazon.awssdk.services.rekognition.model.ListStreamProcessorsResponse;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import software.amazon.awssdk.services.rekognition.model.StreamProcessor;
import software.amazon.awssdk.services.rekognition.model.StreamProcessorInput;
import software.amazon.awssdk.services.rekognition.model.StreamProcessorSettings;
import software.amazon.awssdk.services.rekognition.model.StreamProcessorOutput;
import software.amazon.awssdk.services.rekognition.model.StartStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeStreamProcessorResponse;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 * <p>
 * For more information, see the following documentation topic:
 * <p>
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class CreateStreamProcessor {
    public static void main(String[] args) {
        final String usage = """
                
                Usage:    <role> <kinInputStream> <kinOutputStream> <collectionName> <StreamProcessorName>
                
                Where:
                   role - The ARN of the AWS Identity and Access Management (IAM) role to use. \s
                   kinInputStream - The ARN of the Kinesis video stream.\s
                   kinOutputStream - The ARN of the Kinesis data stream.\s
                   collectionName - The name of the collection to use that contains content. \s
                   StreamProcessorName - The name of the Stream Processor. \s
                """;

        if (args.length != 5) {
            System.out.println(usage);
            System.exit(1);
        }

        String role = args[0];
        String kinInputStream = args[1];
        String kinOutputStream = args[2];
        String collectionName = args[3];
        String streamProcessorName = args[4];

        Region region = Region.US_EAST_1;
        RekognitionClient rekClient = RekognitionClient.builder()
                .region(region)
                .build();

        processCollection(rekClient, streamProcessorName, kinInputStream, kinOutputStream, collectionName,
                role);
        startSpecificStreamProcessor(rekClient, streamProcessorName);
        listStreamProcessors(rekClient);
        describeStreamProcessor(rekClient, streamProcessorName);
        deleteSpecificStreamProcessor(rekClient, streamProcessorName);
    }

    public static void listStreamProcessors(RekognitionClient rekClient) {
        ListStreamProcessorsRequest request = ListStreamProcessorsRequest.builder()
                .maxResults(15)
                .build();

        ListStreamProcessorsResponse listStreamProcessorsResult = rekClient.listStreamProcessors(request);
        for (StreamProcessor streamProcessor : listStreamProcessorsResult.streamProcessors()) {
            System.out.println("StreamProcessor name - " + streamProcessor.name());
            System.out.println("Status - " + streamProcessor.status());
        }
    }

    private static void describeStreamProcessor(RekognitionClient rekClient, String StreamProcessorName) {
        DescribeStreamProcessorRequest streamProcessorRequest = DescribeStreamProcessorRequest.builder()
                .name(StreamProcessorName)
                .build();

        DescribeStreamProcessorResponse describeStreamProcessorResult = rekClient
                .describeStreamProcessor(streamProcessorRequest);
        System.out.println("Arn - " + describeStreamProcessorResult.streamProcessorArn());
        System.out.println("Input kinesisVideo stream - "
                + describeStreamProcessorResult.input().kinesisVideoStream().arn());
        System.out.println("Output kinesisData stream - "
                + describeStreamProcessorResult.output().kinesisDataStream().arn());
        System.out.println("RoleArn - " + describeStreamProcessorResult.roleArn());
        System.out.println(
                "CollectionId - "
                        + describeStreamProcessorResult.settings().faceSearch().collectionId());
        System.out.println("Status - " + describeStreamProcessorResult.status());
        System.out.println("Status message - " + describeStreamProcessorResult.statusMessage());
        System.out.println("Creation timestamp - " + describeStreamProcessorResult.creationTimestamp());
        System.out.println("Last update timestamp - " + describeStreamProcessorResult.lastUpdateTimestamp());
    }

    private static void startSpecificStreamProcessor(RekognitionClient rekClient, String StreamProcessorName) {
        try {
            StartStreamProcessorRequest streamProcessorRequest = StartStreamProcessorRequest.builder()
                    .name(StreamProcessorName)
                    .build();

            rekClient.startStreamProcessor(streamProcessorRequest);
            System.out.println("Stream Processor " + StreamProcessorName + " started.");

        } catch (RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }

    private static void processCollection(RekognitionClient rekClient, String StreamProcessorName,
                                          String kinInputStream, String kinOutputStream, String collectionName, String role) {
        try {
            KinesisVideoStream videoStream = KinesisVideoStream.builder()
                    .arn(kinInputStream)
                    .build();

            KinesisDataStream dataStream = KinesisDataStream.builder()
                    .arn(kinOutputStream)
                    .build();

            StreamProcessorOutput processorOutput = StreamProcessorOutput.builder()
                    .kinesisDataStream(dataStream)
                    .build();

            StreamProcessorInput processorInput = StreamProcessorInput.builder()
                    .kinesisVideoStream(videoStream)
                    .build();

            FaceSearchSettings searchSettings = FaceSearchSettings.builder()
                    .faceMatchThreshold(75f)
                    .collectionId(collectionName)
                    .build();

            StreamProcessorSettings processorSettings = StreamProcessorSettings.builder()
                    .faceSearch(searchSettings)
                    .build();

            CreateStreamProcessorRequest processorRequest = CreateStreamProcessorRequest.builder()
                    .name(StreamProcessorName)
                    .input(processorInput)
                    .output(processorOutput)
                    .roleArn(role)
                    .settings(processorSettings)
                    .build();

            CreateStreamProcessorResponse response = rekClient.createStreamProcessor(processorRequest);
            System.out.println("The ARN for the newly create stream processor is "
                    + response.streamProcessorArn());

        } catch (RekognitionException e) {
            System.out.println(e.getMessage());
            System.exit(1);
        }
    }

    private static void deleteSpecificStreamProcessor(RekognitionClient rekClient, String StreamProcessorName) {
        rekClient.stopStreamProcessor(a -> a.name(StreamProcessorName));
        rekClient.deleteStreamProcessor(a -> a.name(StreamProcessorName));
        System.out.println("Stream Processor " + StreamProcessorName + " deleted.");
    }
}
```

## Usando processadores de stream para pesquisa facial (exemplo de Java V1)
<a name="using-stream-processors"></a>

O código de exemplo a seguir mostra como chamar várias operações do processador de fluxo, como [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html)e [StartStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartStreamProcessor.html), usando o Java V1. O exemplo inclui uma classe de gerenciador de processador de fluxo (StreamManager) que fornece métodos para chamar operações do processador de fluxo. A classe inicial (Starter) cria um StreamManager objeto e chama várias operações. 

**Para configurar o exemplo:**

1. Defina os valores dos campos de membro de classe Starter para seus valores desejados.

1. Na função de classe Starter `main`, exclua a função chamada de função desejada.

### Classe inicial
<a name="streaming-started"></a>

```
//Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)

// Starter class. Use to create a StreamManager class
// and call stream processor operations.
package com.amazonaws.samples;
import com.amazonaws.samples.*;

public class Starter {

	public static void main(String[] args) {
		
		
    	String streamProcessorName="Stream Processor Name";
    	String kinesisVideoStreamArn="Kinesis Video Stream Arn";
    	String kinesisDataStreamArn="Kinesis Data Stream Arn";
    	String roleArn="Role Arn";
    	String collectionId="Collection ID";
    	Float matchThreshold=50F;

		try {
			StreamManager sm= new StreamManager(streamProcessorName,
					kinesisVideoStreamArn,
					kinesisDataStreamArn,
					roleArn,
					collectionId,
					matchThreshold);
			//sm.createStreamProcessor();
			//sm.startStreamProcessor();
			//sm.deleteStreamProcessor();
			//sm.deleteStreamProcessor();
			//sm.stopStreamProcessor();
			//sm.listStreamProcessors();
			//sm.describeStreamProcessor();
		}
		catch(Exception e){
			System.out.println(e.getMessage());
		}
	}
}
```

### StreamManager classe
<a name="streaming-manager"></a>

```
//Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)

// Stream manager class. Provides methods for calling
// Stream Processor operations.
package com.amazonaws.samples;

import com.amazonaws.services.rekognition.AmazonRekognition;
import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder;
import com.amazonaws.services.rekognition.model.CreateStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.CreateStreamProcessorResult;
import com.amazonaws.services.rekognition.model.DeleteStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.DeleteStreamProcessorResult;
import com.amazonaws.services.rekognition.model.DescribeStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.DescribeStreamProcessorResult;
import com.amazonaws.services.rekognition.model.FaceSearchSettings;
import com.amazonaws.services.rekognition.model.KinesisDataStream;
import com.amazonaws.services.rekognition.model.KinesisVideoStream;
import com.amazonaws.services.rekognition.model.ListStreamProcessorsRequest;
import com.amazonaws.services.rekognition.model.ListStreamProcessorsResult;
import com.amazonaws.services.rekognition.model.StartStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.StartStreamProcessorResult;
import com.amazonaws.services.rekognition.model.StopStreamProcessorRequest;
import com.amazonaws.services.rekognition.model.StopStreamProcessorResult;
import com.amazonaws.services.rekognition.model.StreamProcessor;
import com.amazonaws.services.rekognition.model.StreamProcessorInput;
import com.amazonaws.services.rekognition.model.StreamProcessorOutput;
import com.amazonaws.services.rekognition.model.StreamProcessorSettings;

public class StreamManager {

    private String streamProcessorName;
    private String kinesisVideoStreamArn;
    private String kinesisDataStreamArn;
    private String roleArn;
    private String collectionId;
    private float matchThreshold;

    private AmazonRekognition rekognitionClient;
    

    public StreamManager(String spName,
    		String kvStreamArn,
    		String kdStreamArn,
    		String iamRoleArn,
    		String collId,
    		Float threshold){
    	streamProcessorName=spName;
    	kinesisVideoStreamArn=kvStreamArn;
    	kinesisDataStreamArn=kdStreamArn;
    	roleArn=iamRoleArn;
    	collectionId=collId;
    	matchThreshold=threshold;
    	rekognitionClient=AmazonRekognitionClientBuilder.defaultClient();
    	
    }
    
    public void createStreamProcessor() {
    	//Setup input parameters
        KinesisVideoStream kinesisVideoStream = new KinesisVideoStream().withArn(kinesisVideoStreamArn);
        StreamProcessorInput streamProcessorInput =
                new StreamProcessorInput().withKinesisVideoStream(kinesisVideoStream);
        KinesisDataStream kinesisDataStream = new KinesisDataStream().withArn(kinesisDataStreamArn);
        StreamProcessorOutput streamProcessorOutput =
                new StreamProcessorOutput().withKinesisDataStream(kinesisDataStream);
        FaceSearchSettings faceSearchSettings =
                new FaceSearchSettings().withCollectionId(collectionId).withFaceMatchThreshold(matchThreshold);
        StreamProcessorSettings streamProcessorSettings =
                new StreamProcessorSettings().withFaceSearch(faceSearchSettings);

        //Create the stream processor
        CreateStreamProcessorResult createStreamProcessorResult = rekognitionClient.createStreamProcessor(
                new CreateStreamProcessorRequest().withInput(streamProcessorInput).withOutput(streamProcessorOutput)
                        .withSettings(streamProcessorSettings).withRoleArn(roleArn).withName(streamProcessorName));

        //Display result
        System.out.println("Stream Processor " + streamProcessorName + " created.");
        System.out.println("StreamProcessorArn - " + createStreamProcessorResult.getStreamProcessorArn());
    }

    public void startStreamProcessor() {
        StartStreamProcessorResult startStreamProcessorResult =
                rekognitionClient.startStreamProcessor(new StartStreamProcessorRequest().withName(streamProcessorName));
        System.out.println("Stream Processor " + streamProcessorName + " started.");
    }

    public void stopStreamProcessor() {
        StopStreamProcessorResult stopStreamProcessorResult =
                rekognitionClient.stopStreamProcessor(new StopStreamProcessorRequest().withName(streamProcessorName));
        System.out.println("Stream Processor " + streamProcessorName + " stopped.");
    }

    public void deleteStreamProcessor() {
        DeleteStreamProcessorResult deleteStreamProcessorResult = rekognitionClient
                .deleteStreamProcessor(new DeleteStreamProcessorRequest().withName(streamProcessorName));
        System.out.println("Stream Processor " + streamProcessorName + " deleted.");
    }

    public void describeStreamProcessor() {
        DescribeStreamProcessorResult describeStreamProcessorResult = rekognitionClient
                .describeStreamProcessor(new DescribeStreamProcessorRequest().withName(streamProcessorName));

        //Display various stream processor attributes.
        System.out.println("Arn - " + describeStreamProcessorResult.getStreamProcessorArn());
        System.out.println("Input kinesisVideo stream - "
                + describeStreamProcessorResult.getInput().getKinesisVideoStream().getArn());
        System.out.println("Output kinesisData stream - "
                + describeStreamProcessorResult.getOutput().getKinesisDataStream().getArn());
        System.out.println("RoleArn - " + describeStreamProcessorResult.getRoleArn());
        System.out.println(
                "CollectionId - " + describeStreamProcessorResult.getSettings().getFaceSearch().getCollectionId());
        System.out.println("Status - " + describeStreamProcessorResult.getStatus());
        System.out.println("Status message - " + describeStreamProcessorResult.getStatusMessage());
        System.out.println("Creation timestamp - " + describeStreamProcessorResult.getCreationTimestamp());
        System.out.println("Last update timestamp - " + describeStreamProcessorResult.getLastUpdateTimestamp());
    }

    public void listStreamProcessors() {
        ListStreamProcessorsResult listStreamProcessorsResult =
                rekognitionClient.listStreamProcessors(new ListStreamProcessorsRequest().withMaxResults(100));

        //List all stream processors (and state) returned from Rekognition
        for (StreamProcessor streamProcessor : listStreamProcessorsResult.getStreamProcessors()) {
            System.out.println("StreamProcessor name - " + streamProcessor.getName());
            System.out.println("Status - " + streamProcessor.getStatus());
        }
    }
}
```

# Lendo os resultados da análise de streaming de vídeo
<a name="streaming-video-kinesis-output"></a>

Você pode usar a biblioteca de cliente do Amazon Kinesis Data Streams para consumir os resultados da análise que são enviados para o stream de saída do Amazon Kinesis Data Streams. Para obter mais informações, consulte [Ler dados de um Kinesis Data Stream](https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html). O Amazon Rekognition Video coloca um registro de quadro JSON para cada quadro analisado no stream de saída do Kinesis. O Amazon Rekognition Video não analisa cada quadro que é passado para ele pelo stream de vídeo do Kinesis. 

Um registro de quadro enviado para um fluxo de dados do Kinesis contém informações sobre em qual fragmento de stream de vídeo do Kinesis o quadro está, onde o quadro está no fragmento e faces que são reconhecidas no quadro. Ele também inclui informações de status para o processador de fluxo. Para obter mais informações, consulte [Entender o registro de quadros JSON de reconhecimento facial do Kinesis](streaming-video-kinesis-output-reference.md).

A biblioteca do Amazon Kinesis Video Streams Parser contém exemplos de testes que consomem os resultados do Amazon Rekognition Video e os integram ao stream de vídeo original do Kinesis. Para obter mais informações, consulte [Exibindo resultados do Rekognition com o Kinesis Video Streams localmente](displaying-rekognition-results-locally.md).

O Amazon Rekognition Video transmite informações de análise do Amazon Rekognition Video para o fluxo de dados do Kinesis. Veja a seguir um exemplo de JSON para um único registro. 

```
{
  "InputInformation": {
    "KinesisVideo": {
      "StreamArn": "arn:aws:kinesisvideo:us-west-2:nnnnnnnnnnnn:stream/stream-name",
      "FragmentNumber": "91343852333289682796718532614445757584843717598",
      "ServerTimestamp": 1510552593.455,
      "ProducerTimestamp": 1510552593.193,
      "FrameOffsetInSeconds": 2
    }
  },
  "StreamProcessorInformation": {
    "Status": "RUNNING"
  },
  "FaceSearchResponse": [
    {
      "DetectedFace": {
        "BoundingBox": {
          "Height": 0.075,
          "Width": 0.05625,
          "Left": 0.428125,
          "Top": 0.40833333
        },
        "Confidence": 99.975174,
        "Landmarks": [
          {
            "X": 0.4452057,
            "Y": 0.4395594,
            "Type": "eyeLeft"
          },
          {
            "X": 0.46340984,
            "Y": 0.43744427,
            "Type": "eyeRight"
          },
          {
            "X": 0.45960626,
            "Y": 0.4526856,
            "Type": "nose"
          },
          {
            "X": 0.44958648,
            "Y": 0.4696949,
            "Type": "mouthLeft"
          },
          {
            "X": 0.46409217,
            "Y": 0.46704912,
            "Type": "mouthRight"
          }
        ],
        "Pose": {
          "Pitch": 2.9691637,
          "Roll": -6.8904796,
          "Yaw": 23.84388
        },
        "Quality": {
          "Brightness": 40.592964,
          "Sharpness": 96.09616
        }
      },
      "MatchedFaces": [
        {
          "Similarity": 88.863960,
          "Face": {
            "BoundingBox": {
              "Height": 0.557692,
              "Width": 0.749838,
              "Left": 0.103426,
              "Top": 0.206731
            },
            "FaceId": "ed1b560f-d6af-5158-989a-ff586c931545",
            "Confidence": 99.999201,
            "ImageId": "70e09693-2114-57e1-807c-50b6d61fa4dc",
            "ExternalImageId": "matchedImage.jpeg"
          }
        }
      ]
    }
  ]
}
```

No exemplo de JSON, observe:
+ **InputInformation**— Informações sobre o stream de vídeo do Kinesis usado para transmitir vídeo para o Amazon Rekognition Video. Para obter mais informações, consulte [InputInformation](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-inputinformation).
+ **StreamProcessorInformation**— Informações de status do processador de streaming de vídeo Amazon Rekognition Video. O único valor possível para o campo `Status` é RUNNING. Para obter mais informações, consulte [StreamProcessorInformation](streaming-video-kinesis-output-reference-streamprocessorinformation.md).
+ **FaceSearchResponse**— Contém informações sobre rostos no streaming de vídeo que correspondem aos rostos na coleção de entrada. [FaceSearchResponse](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-facesearchresponse)contém um [DetectedFace](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-detectedface) objeto, que é uma face que foi detectada no quadro de vídeo analisado. Para cada face detectada, a matriz `MatchedFaces` contém uma matriz de objetos de faces correspondentes ([MatchedFace](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-facematch)) encontradas na coleção de entrada, juntamente com uma pontuação de semelhança. 

## Mapeando o stream de vídeo do Kinesis para o fluxo de dados do Kinesis
<a name="mapping-streams"></a>

Talvez você queira mapear os quadros do stream de vídeo do Kinesis para os quadros analisados que são enviados para o fluxo de dados do Kinesis. Por exemplo, durante a exibição de um streaming de vídeo, você pode querer exibir caixas ao redor das faces de pessoas reconhecidas. As coordenadas da caixa delimitadora são enviadas como parte do Registro de Reconhecimento Facial do Kinesis para o fluxo de dados do Kinesis. Para exibir a caixa delimitadora corretamente, você precisa mapear as informações de tempo enviadas com o Kinesis Face Recognition Record com os quadros correspondentes no stream de vídeo de origem do Kinesis.

A técnica usada para mapear o stream de vídeo do Kinesis para o fluxo de dados do Kinesis depende se você está transmitindo mídia ao vivo (como um vídeo ao vivo) ou se você está transmitindo mídia arquivada (como um vídeo armazenado).

### Mapeamento quando você está transmitindo mídia ao vivo
<a name="mapping-streaming-video"></a>

**Para mapear um quadro de stream de vídeo do Kinesis para um quadro de fluxo de dados do Kinesis**

1. Defina o parâmetro `FragmentTimeCodeType` de entrada da [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)operação como`RELATIVE`. 

1. Chame `PutMedia` para entregar mídia ao vivo no stream de vídeo do Kinesis.

1. Ao receber um registro de reconhecimento facial do Kinesis do fluxo de dados do Kinesis, armazene os valores de `ProducerTimestamp` e `FrameOffsetInSeconds` do campo [KinesisVideo](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo).

1. Calcule o carimbo de data/hora que corresponde ao quadro do stream de vídeo do Kinesis adicionando os valores de `FrameOffsetInSeconds` e do campo `ProducerTimestamp` juntos. 

### Mapeando quando você está transmitindo mídia arquivada
<a name="map-stored-video"></a>

**Para mapear um quadro de stream de vídeo do Kinesis para um quadro de fluxo de dados do Kinesis**

1. Ligue [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)para entregar mídia arquivada ao stream de vídeo do Kinesis.

1. Quando você receber um objeto `Acknowledgement` da resposta da operação `PutMedia`, armazene o valor do campo `FragmentNumber` do campo [Payload (Carga)](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html#API_dataplane_PutMedia_ResponseSyntax). `FragmentNumber` é o número do fragmento para o cluster do MKV. 

1. Ao receber um Kinesis Face Recognition Record do fluxo de dados do Kinesis, armazene o valor do campo `FrameOffsetInSeconds` no campo [KinesisVideo](streaming-video-kinesis-output-reference.md#streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo). 

1. Calcule o mapeamento usando os valores `FragmentNumber` e `FrameOffsetInSeconds` que você armazenou nas etapas 2 e 3. `FrameOffsetInSeconds` é o deslocamento no fragmento com o `FragmentNumber` específico que é enviado para o fluxo de dados do Amazon Kinesis. Para obter mais informações sobre como obter os quadros de vídeo para um determinado número de fragmento, consulte Mídia arquivada do [Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Operations_Amazon_Kinesis_Video_Streams_Archived_Media.html).

# Exibindo resultados do Rekognition com o Kinesis Video Streams localmente
<a name="displaying-rekognition-results-locally"></a>

 [Você pode ver os resultados do Amazon Rekognition Video exibidos em seu feed do Amazon Kinesis Video Streams usando os exemplos de testes da Amazon Kinesis Video Streams Parser Library fornecidos em - Rekognition Examples. KinesisVideo ](https://github.com/aws/amazon-kinesis-video-streams-parser-library#kinesisvideo---rekognition-examples) Ele `KinesisVideoRekognitionIntegrationExample` exibe caixas delimitadoras sobre os rostos detectados e renderiza o vídeo localmente. JFrame Esse processo pressupõe que você tenha conectado com êxito uma entrada de mídia da câmera de um dispositivo a um stream de vídeo do Kinesis e iniciado um processador Amazon Rekognition Stream. Para obter mais informações, consulte [Streaming usando um GStreamer plug-in](streaming-using-gstreamer-plugin.md). 

## Etapa 1: Instalando a biblioteca do Kinesis Video Streams Parser
<a name="step-1-install-parser-library"></a>

 Para criar um diretório e baixar o repositório Github, execute o seguinte comando: 

```
$ git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library.git
```

 Navegue até o diretório da biblioteca e execute o seguinte comando do Maven para realizar uma instalação limpa: 

```
$ mvn clean install
```

## Etapa 2: Configurando o teste de exemplo de integração entre Kinesis Video Streams e Rekognition
<a name="step-2-configure-kinesis-video-rekognition-example-test"></a>

 Abra o arquivo `KinesisVideoRekognitionIntegrationExampleTest.java`. Remova `@Ignore` a direita após o cabeçalho da classe. Preencha os campos de dados com as informações dos seus recursos do Amazon Kinesis e do Amazon Rekognition. Para obter mais informações, consulte [Configurando seus recursos do Amazon Rekognition Video e do Amazon Kinesis](setting-up-your-amazon-rekognition-streaming-video-resources.md). Se você estiver transmitindo vídeo para seu stream de vídeo do Kinesis, remova o parâmetro `inputStream`. 

 Veja o exemplo de código a seguir: 

```
RekognitionInput rekognitionInput = RekognitionInput.builder()
  .kinesisVideoStreamArn("arn:aws:kinesisvideo:us-east-1:123456789012:stream/rekognition-test-video-stream")
  .kinesisDataStreamArn("arn:aws:kinesis:us-east-1:123456789012:stream/AmazonRekognition-rekognition-test-data-stream")
  .streamingProcessorName("rekognition-test-stream-processor")
  // Refer how to add face collection :
  // https://docs.aws.amazon.com/rekognition/latest/dg/add-faces-to-collection-procedure.html
  .faceCollectionId("rekognition-test-face-collection")
  .iamRoleArn("rekognition-test-IAM-role")
  .matchThreshold(0.95f)
  .build();                
            
KinesisVideoRekognitionIntegrationExample example = KinesisVideoRekognitionIntegrationExample.builder()
  .region(Regions.US_EAST_1)
  .kvsStreamName("rekognition-test-video-stream")
  .kdsStreamName("AmazonRekognition-rekognition-test-data-stream")
  .rekognitionInput(rekognitionInput)
  .credentialsProvider(new ProfileCredentialsProvider())
  // NOTE: Comment out or delete the inputStream parameter if you are streaming video, otherwise
  // the test will use a sample video. 
  //.inputStream(TestResourceUtil.getTestInputStream("bezos_vogels.mkv"))
  .build();
```

## Etapa 3: Executando o teste de exemplo de integração entre Kinesis Video Streams e Rekognition
<a name="step-3-run-kinesis-video-rekognition-example-test"></a>

 Certifique-se de que seu stream de vídeo do Kinesis esteja recebendo entrada de mídia se você estiver transmitindo para ele e comece a analisar seu stream com um processador Amazon Rekognition Video Stream em execução. Para obter mais informações, consulte [Visão geral das operações do processador de stream do Amazon Rekognition Video](streaming-video.md#using-rekognition-video-stream-processor). Execute a `KinesisVideoRekognitionIntegrationExampleTest` aula como um JUnit teste. Depois de um pequeno atraso, uma nova janela é aberta com um feed de vídeo do seu stream de vídeo do Kinesis com caixas delimitadoras desenhadas sobre faces detectadas. 

**nota**  
 As faces na coleção usada neste exemplo devem ter a ID de imagem externa (o nome do arquivo) especificada nesse formato para que os rótulos das caixas delimitadoras exibam texto significativo: PersonName 1-Confiável, PersonName 2-Intruso, 3-Neutro, etc. PersonName Os rótulos também podem ser codificados por cores e são personalizáveis no arquivo.java. FaceType 

# Entender o registro de quadros JSON de reconhecimento facial do Kinesis
<a name="streaming-video-kinesis-output-reference"></a>

O Amazon Rekognition Video pode reconhecer faces em um streaming de vídeo. Para cada quadro analisado, o Amazon Rekognition Video gera um registro de quadro JSON em um fluxo de dados do Kinesis. O Amazon Rekognition Video não analisa cada quadro que é passado para ele pelo stream de vídeo do Kinesis. 

O registro de quadros JSON contém informações sobre o stream de entrada e de saída, o status do processador de fluxo e informações sobre faces que são reconhecidas no quadro analisado. Esta seção contém informações de referência para o registro de quadros JSON.

A seguir está a sintaxe JSON para um registro de fluxo de dados do Kinesis. Para obter mais informações, consulte [Trabalhando com eventos de streaming de vídeo](streaming-video.md).

**nota**  
A API Amazon Rekognition Video funciona comparando as faces em seu stream de entrada com uma coleção de faces e retornando as correspondências mais próximas encontradas, junto com uma pontuação de similaridade.

```
{
    "InputInformation": {
        "KinesisVideo": {
            "StreamArn": "string",
            "FragmentNumber": "string",
            "ProducerTimestamp": number,
            "ServerTimestamp": number,
            "FrameOffsetInSeconds": number
        }
    },
    "StreamProcessorInformation": {
        "Status": "RUNNING"
    },
    "FaceSearchResponse": [
        {
            "DetectedFace": {
                "BoundingBox": {
                    "Width": number,
                    "Top": number,
                    "Height": number,
                    "Left": number
                },
                "Confidence": number,
                "Landmarks": [
                    {
                        "Type": "string",
                        "X": number,
                        "Y": number
                    }
                ],
                "Pose": {
                    "Pitch": number,
                    "Roll": number,
                    "Yaw": number
                },
                "Quality": {
                    "Brightness": number,
                    "Sharpness": number
                }
            },
            "MatchedFaces": [
                {
                    "Similarity": number,
                    "Face": {
                        "BoundingBox": {
                            "Width": number,
                            "Top": number,
                            "Height": number,
                            "Left": number
                        },
                        "Confidence": number,
                        "ExternalImageId": "string",
                        "FaceId": "string",
                        "ImageId": "string"
                    }
                }
            ]
        }
    ]
}
```

## Registro JSON
<a name="streaming-video-kinesis-output-reference-processorresult"></a>

O registro JSON inclui informações sobre um quadro processado pelo Amazon Rekognition Video. O registro inclui informações sobre o streaming de vídeo, o status do quadro analisado e informações sobre faces que são reconhecidas no quadro.

**InputInformation**

Informações sobre o stream de vídeo do Kinesis usado para transmitir vídeo para o Amazon Rekognition Video.

Tipo: objeto [InputInformation](#streaming-video-kinesis-output-reference-inputinformation)

**StreamProcessorInformation**

Informações sobre o processador de stream do Amazon Rekognition Video. Isso inclui informações de status para o status atual do processador de fluxo.

Tipo: objeto [StreamProcessorInformation](streaming-video-kinesis-output-reference-streamprocessorinformation.md) 

**FaceSearchResponse**

Informações sobre as faces detectadas em um quadro de streaming de vídeo e as faces correspondentes encontradas na coleção de entrada.

Tipo: matriz de objetos [FaceSearchResponse](#streaming-video-kinesis-output-reference-facesearchresponse)

## InputInformation
<a name="streaming-video-kinesis-output-reference-inputinformation"></a>

Informações sobre um stream de vídeo de origem usado pelo Amazon Rekognition Video. Para obter mais informações, consulte [Trabalhando com eventos de streaming de vídeo](streaming-video.md).

**KinesisVideo**

Tipo: objeto [KinesisVideo](#streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo)

## KinesisVideo
<a name="streaming-video-kinesis-output-reference-kinesisvideostreams-kinesisvideo"></a>

Informações sobre o stream de vídeo do Kinesis que transmite o vídeo de origem para o Amazon Rekognition Video. Para obter mais informações, consulte [Trabalhando com eventos de streaming de vídeo](streaming-video.md).

**StreamArn**

O nome de recurso da Amazon (ARN) do stream de vídeo do Kinesis.

Tipo: string 

**FragmentNumber**

O fragmento de streaming de vídeo que contém o quadro que esse registro representa.

Tipo: string

**ProducerTimestamp**

O time stamp do Unix do lado do produtor do fragmento. Para obter mais informações, consulte [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html).

Tipo: número

**ServerTimestamp**

O time stamp do Unix do lado do servidor do fragmento. Para obter mais informações, consulte [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html).

Tipo: número

**FrameOffsetInSeconds**

O deslocamento do quadro (em segundos) dentro do fragmento.

Tipo: número 

# StreamProcessorInformation
<a name="streaming-video-kinesis-output-reference-streamprocessorinformation"></a>

Informações de status sobre o processador de fluxo.

**Status**

O status atual do processador de fluxo. O único valor possível é RUNNING.

Tipo: string

## FaceSearchResponse
<a name="streaming-video-kinesis-output-reference-facesearchresponse"></a>

Informações sobre uma face detectada em um quadro de streaming de vídeo e as faces em uma coleção que correspondem à face detectada. Você especifica a coleção em uma chamada para [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html). Para obter mais informações, consulte [Trabalhando com eventos de streaming de vídeo](streaming-video.md). 

**DetectedFace**

Detalhes de uma face detectada em um quadro de vídeo analisado.

Tipo: objeto [DetectedFace](#streaming-video-kinesis-output-reference-detectedface)

**MatchedFaces**

Uma matriz dos detalhes de faces em uma coleção que corresponda à face detectada na `DetectedFace`.

Tipo: matriz de objetos [MatchedFace](#streaming-video-kinesis-output-reference-facematch)

## DetectedFace
<a name="streaming-video-kinesis-output-reference-detectedface"></a>

Informações sobre uma face detectada em um quadro de streaming de vídeo. As faces correspondentes na coleção de entrada estão disponíveis no campo do objeto [MatchedFace](#streaming-video-kinesis-output-reference-facematch).

**BoundingBox**

A caixa delimitadora coordena para uma face que é detectada dentro de um quadro de vídeo analisado. O BoundingBox objeto tem as mesmas propriedades do BoundingBox objeto usado para análise de imagem.

Tipo: objeto [BoundingBox](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_BoundingBox.html) 

**Confiança**

O nível de confiança (1-100) que o Amazon Rekognition Video tem de que a face detectada é, na verdade, uma face. 1 é a confiança mais baixa, 100 é a mais alta.

Tipo: número

**Pontos de referência**

Uma matriz de pontos de referência faciais.

Tipo: Matriz de objetos de [pontos de referência](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_Landmark.html)

**Pose**

Indica a pose da face conforme determinada pelos seus eixos lateral, vertical e longitudinal.

Tipo: Objeto de [pose](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_Pose.html)

**Qualidade**

Identifica o brilho a nitidez da imagem da face. 

Tipo: objeto [ImageQuality](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_ImageQuality.html)

## MatchedFace
<a name="streaming-video-kinesis-output-reference-facematch"></a>

Informações sobre uma face que corresponde a uma face detectada em um quadro de vídeo analisado.

**Rosto**

Informações sobre a correspondência de uma face na coleção de entrada que corresponde à face no objeto [DetectedFace](#streaming-video-kinesis-output-reference-detectedface). 

Tipo: Objeto [Face](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_Face.html) 

**Semelhança**

O nível de confiança (1-100) com o qual as faces coincidem. 1 é a confiança mais baixa, 100 é a mais alta.

Tipo: número 

# Streaming usando um GStreamer plug-in
<a name="streaming-using-gstreamer-plugin"></a>

O Amazon Rekognition Video pode analisar uma transmissão de vídeo ao vivo a partir da câmera de um dispositivo. Para acessar a entrada de mídia de uma fonte de dispositivo, você precisa instalar GStreamer. GStreamer é um software de estrutura multimídia de terceiros que conecta fontes de mídia e ferramentas de processamento em canais de fluxo de trabalho. Você também precisa instalar o [Plug-in de produtor do Amazon Kinesis Video Streams](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/) para Gstreamer. Esse processo pressupõe que você tenha configurado com êxito seus recursos do Amazon Rekognition Video e do Amazon Kinesis. Para obter mais informações, consulte [Configurando seus recursos do Amazon Rekognition Video e do Amazon Kinesis](setting-up-your-amazon-rekognition-streaming-video-resources.md).

## Etapa 1: Instale o Gstreamer
<a name="step-1-install-gstreamer"></a>

 Baixe e instale o Gstreamer, um software de plataforma multimídia de terceiros. Você pode usar um software de gerenciamento de pacotes como o Homebrew ([Gstreamer no Homebrew](https://formulae.brew.sh/formula/gstreamer)) ou obtê-lo diretamente no [site do Freedesktop](https://gstreamer.freedesktop.org/download/). 

 Verifique a instalação bem-sucedida do Gstreamer iniciando um feed de vídeo com uma fonte de teste do seu terminal de linha de comando. 

```
$ gst-launch-1.0 videotestsrc ! autovideosink
```

## Etapa 2: Instale o plug-in Kinesis Video Streams Producer
<a name="step-2-install-kinesis-video-plugin"></a>

 Nesta seção, você fará o download da [Amazon Kinesis Video Streams Producer Library](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/) e instalará o plug-in Kinesis Video Streams Gstreamer. 

 Crie um diretório e clone o código-fonte do repositório Github. Certifique-se de incluir o parâmetro `--recursive`. 

```
$ git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
```

Siga as [instruções fornecidas pela biblioteca](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/README.md) para configurar e criar o projeto. Certifique-se de usar os comandos específicos da plataforma para seu sistema operacional. Use o parâmetro `-DBUILD_GSTREAMER_PLUGIN=ON` ao executar `cmake` para instalar o plug-in Kinesis Video Streams Gstreamer. Esse projeto requer os seguintes pacotes adicionais que estão incluídos na instalação: GCC ou Clang, Curl, Openssl e Log4cplus. Se sua compilação falhar devido à falta de um pacote, verifique se o pacote está instalado e em seu PATH. Se você encontrar um erro "não é possível executar o programa compilado em C" durante a compilação, execute o comando de compilação novamente. Às vezes, o compilador C correto não é encontrado. 

 Verifique a instalação do plug-in Kinesis Video Streams executando o comando a seguir. 

```
$ gst-inspect-1.0 kvssink
```

 As informações a seguir, como detalhes de fábrica e do plug-in, devem aparecer: 

```
Factory Details:
  Rank                     primary + 10 (266)
  Long-name                KVS Sink
  Klass                    Sink/Video/Network
  Description              GStreamer AWS KVS plugin
  Author                   AWS KVS <kinesis-video-support@amazon.com>
                
Plugin Details:
  Name                     kvssink
  Description              GStreamer AWS KVS plugin
  Filename                 /Users/YOUR_USER/amazon-kinesis-video-streams-producer-sdk-cpp/build/libgstkvssink.so
  Version                  1.0
  License                  Proprietary
  Source module            kvssinkpackage
  Binary package           GStreamer
  Origin URL               http://gstreamer.net/
  
  ...
```

## Etapa 3: Execute o Gstreamer com o plugin Kinesis Video Streams
<a name="step-3-run-gstreamer-with-kinesis-video-plugin"></a>

 Antes de começar a transmitir da câmera de um dispositivo para o Kinesis Video Streams, talvez seja necessário converter a fonte de mídia em um codec aceitável para o Kinesis Video Streams. Para determinar as especificações e os recursos de formato dos dispositivos atualmente conectados à sua máquina, execute o comando a seguir.

```
$ gst-device-monitor-1.0
```

 Para começar a transmitir, inicie o Gstreamer com o comando de exemplo a seguir e adicione suas credenciais e informações do Amazon Kinesis Video Streams. Você deve usar as chaves de acesse e a região para o perfil de serviço do IAM que você criou ao [conceder ao Amazon Rekognition acesse aos seus streams do Kinesis](https://docs.aws.amazon.com/rekognition/latest/dg/api-streaming-video-roles.html#api-streaming-video-roles-all-stream). Para obter mais informações sobre chaves de acesso, consulte [Gerenciando chaves de acesso para usuários do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) no *Guia do usuário do IAM*. Além disso, você pode ajustar os parâmetros do argumento do formato de vídeo conforme exigido pelo seu uso e disponíveis no seu dispositivo. 

```
$ gst-launch-1.0 autovideosrc device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! 
                x264enc bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! 
                kvssink stream-name="YOUR_STREAM_NAME" storage-size=512 access-key="YOUR_ACCESS_KEY" secret-key="YOUR_SECRET_ACCESS_KEY" aws-region="YOUR_AWS_REGION"
```

 Para obter mais comandos de inicialização, consulte [Exemplos de comandos de GStreamer inicialização](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-gstreamer-plugin.html#examples-gstreamer-plugin-launch). 

**nota**  
 Se o comando de inicialização terminar com um erro de não negociação, verifique a saída do Device Monitor e certifique-se de que os valores dos parâmetros `videoconvert` sejam recursos válidos do seu dispositivo. 

 Você verá um feed de vídeo da câmera do seu dispositivo no stream de vídeo do Kinesis após alguns segundos. Para começar a detectar e combinar faces com o Amazon Rekognition, inicie seu processador de stream do Amazon Rekognition Video. Para obter mais informações, consulte [Visão geral das operações do processador de stream do Amazon Rekognition Video](streaming-video.md#using-rekognition-video-stream-processor). 

# Solução de problemas de streaming de vídeo
<a name="streaming-video-troubleshooting"></a>

Este tópico fornece informações sobre solução de problemas para usar o Amazon Rekognition Video com streaming de vídeos.

**Topics**
+ [Não sei se meu processador de fluxo foi criado com êxito](#ts-streaming-video-create-sp)
+ [Eu não sei se configurei corretamente o meu processador de fluxos](#ts-configured-sp)
+ [Meu processador de fluxos não está retornando resultados](#ts-streaming-video-no-results-from-sp)
+ [O estado do meu processador de fluxos é FAILED](#ts-failed-state)
+ [Meu processador de fluxos não está retornando os resultados esperados](#w2aac27c79c27c15)

## Não sei se meu processador de fluxo foi criado com êxito
<a name="ts-streaming-video-create-sp"></a>

Use o AWS CLI comando a seguir para obter uma lista dos processadores de stream e seu status atual.

```
aws rekognition list-stream-processors
```

Você pode obter detalhes adicionais usando o AWS CLI comando a seguir. Substitua `stream-processor-name` pelo nome do processador de fluxos necessário.

```
aws rekognition describe-stream-processor --name stream-processor-name
```

## Eu não sei se configurei corretamente o meu processador de fluxos
<a name="ts-configured-sp"></a>

Se seu código não estiver gerando os resultados da análise do Amazon Rekognition Video, seu processador de stream pode não estar configurado corretamente. Faça o seguinte para confirmar se o processador de fluxos está configurado corretamente e pode produzir resultados.

**Para determinar se sua solução está configurada corretamente**

1. Execute o comando a seguir para confirmar se o processador de fluxos está no estado de execução. Altere `stream-processor-name` para o nome do processador de fluxos. O processador de fluxos estará em execução se o valor de `Status` for `RUNNING`. Se o status for `RUNNING` e você não estiver obtendo resultados, consulte [Meu processador de fluxos não está retornando resultados](#ts-streaming-video-no-results-from-sp). Se o status for `FAILED`, consulte [O estado do meu processador de fluxos é FAILED](#ts-failed-state).

   ```
   aws rekognition describe-stream-processor --name stream-processor-name
   ```

1. Se seu processador de stream estiver em execução, execute o seguinte PowerShell comando ou Bash para ler dados do stream de dados de saída do Kinesis. 

   **Bash**

   ```
   SHARD_ITERATOR=$(aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name kinesis-data-stream-name --query 'ShardIterator')
                           aws kinesis get-records --shard-iterator $SHARD_ITERATOR
   ```

   **PowerShell**

   ```
   aws kinesis get-records --shard-iterator ((aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name kinesis-data-stream-name).split('"')[4])
   ```

1. Use a [ferramenta Decode](https://www.base64decode.org/) no site Base64 Decode para decodificar a saída em uma string legível. Para obter mais informações, consulte [Etapa 3: Obter o registro](https://docs.aws.amazon.com/streams/latest/dev/fundamental-stream.html#get-records).

1. Se os comandos funcionarem e você vir os resultados da detecção de face no fluxo de dados do Kinesis, sua solução estará configurada corretamente. Se ocorrer uma falha no comando, verifique as outras sugestões de solução de problemas e consulte [Conceder ao Amazon Rekognition Video acesso aos seus recursos](api-streaming-video-roles.md).

Como alternativa, você pode usar o AWS Lambda blueprint kinesis-process-record "" para registrar mensagens do stream de dados do Kinesis CloudWatch para visualização contínua. Isso acarreta custos adicionais para AWS Lambda e. CloudWatch 

## Meu processador de fluxos não está retornando resultados
<a name="ts-streaming-video-no-results-from-sp"></a>

O processador de fluxos pode não retornar resultados por vários motivos. 

### Motivo 1: seu processador de fluxo não está configurado corretamente
<a name="w2aac27c79c27c11b5"></a>

Seu processador de fluxos pode não estar configurado corretamente. Para obter mais informações, consulte [Eu não sei se configurei corretamente o meu processador de fluxos](#ts-configured-sp).

### Motivo 2: Seu processador de fluxos não está no estado RUNNING
<a name="w2aac27c79c27c11b7"></a>

**Para solucionar o status de um processador de fluxos**

1. Verifique o status do processador de stream com o AWS CLI comando a seguir.

   ```
   aws rekognition describe-stream-processor --name stream-processor-name
   ```

1. Se o valor de `Status` for `STOPPED`, inicie o processador de fluxos com o seguinte comando:

   ```
   aws rekognition start-stream-processor --name stream-processor-name
   ```

1. Se o valor de `Status` for `FAILED`, consulte [O estado do meu processador de fluxos é FAILED](#ts-failed-state).

1. Se o valor de `Status` for `STARTING`, aguarde 2 minutos e verifique o status repetindo a etapa 1. Se o valor de Status ainda for `STARTING`, faça o seguinte:

   1. Exclua o processador de fluxos com o seguinte comando.

      ```
      aws rekognition delete-stream-processor --name stream-processor-name
      ```

   1. Crie um novo processador de fluxos com a mesma configuração. Para obter mais informações, consulte [Trabalhando com eventos de streaming de vídeo](streaming-video.md).

   1. Se você ainda estiver tendo problemas, entre em contato com o AWS Support.

1. Se o valor de `Status` for `RUNNING`, consulte [Motivo 3: Não há dados ativos no stream de vídeo do Kinesis](#ts-no-data).

### Motivo 3: Não há dados ativos no stream de vídeo do Kinesis
<a name="ts-no-data"></a>

**Para verificar se há dados ativos no stream de vídeo do Kinesis**

1. Faça login no e abra Console de gerenciamento da AWS o console do Amazon Kinesis Video Streams [https://console.aws.amazon.com/kinesisvideo/](https://console.aws.amazon.com/kinesisvideo/)em.

1. Selecione o stream de vídeo Kinesis que é a entrada para o processador de stream Amazon Rekognition.

1. Se a pré-visualização indicar **Sem dados no stream**, então não há dados no stream de entrada para o Amazon Rekognition Video processar.

Para obter informações sobre a produção de vídeo com o Kinesis Video Streams, consulte Bibliotecas do [Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html)Producer. 

## O estado do meu processador de fluxos é FAILED
<a name="ts-failed-state"></a>

Você pode verificar o estado de um processador de stream usando o AWS CLI comando a seguir.

```
aws rekognition describe-stream-processor --name stream-processor-name
```

Se o valor de Status for FAILED, verifique as informações de solução de problemas para as seguintes mensagens de erro.

### Erro: "Acesso negado à função"
<a name="w2aac27c79c27c13b9"></a>

O perfil do IAM usado pelo processador de stream não existe ou o Amazon Rekognition Video não tem permissão para assumir a função.

**Para solucionar problemas de acesso ao perfil do IAM**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, selecione **Roles (Funções)** e confirme se a função existe. 

1. Se a função existir, verifique se a função tem a política de *AmazonRekognitionServiceRole*permissões.

1. Se a função não existir ou não tiver as permissões corretas, consulte [Conceder ao Amazon Rekognition Video acesso aos seus recursos](api-streaming-video-roles.md).

1. Inicie o processador de stream com o AWS CLI comando a seguir.

   ```
   aws rekognition start-stream-processor --name stream-processor-name
   ```

### Erro: "Access denied to Kinesis Video (Acesso negado ao vídeo do Kinesis) *ou* Access denied to Kinesis Data (Acesso negado aos dados do Kinesis)"
<a name="w2aac27c79c27c13c11"></a>

A função não tem acesso às operações `GetMedia` e `GetDataEndpoint` da API do Kinesis Video Streams. Também pode não ter acesso às operações `PutRecord` e `PutRecords` da API Kinesis Data Streams 

**Para solucionar problemas de permissões da API**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Abra a função e verifique se ela tem a seguinte política de permissões associada.

1. Se qualquer uma das permissões estiver ausente, atualize a política. Para obter mais informações, consulte [Conceder ao Amazon Rekognition Video acesso aos seus recursos](api-streaming-video-roles.md).

### Erro: “*input-video-stream-name*O stream não existe”
<a name="w2aac27c79c27c13c13"></a>

A entrada de stream de vídeo do Kinesis para o processador de stream não existe ou não está configurada corretamente. 

**Para solucionar problemas do stream de vídeo do Kinesis**

1. Use o seguinte comando para confirmar se o stream existe. 

   ```
   aws kinesisvideo list-streams
   ```

1. Se o stream existir, verifique o seguinte.
   + O nome de recurso da Amazon (ARN) é igual ao ARN do stream de entrada para o processador de fluxos.
   + O stream de vídeo do Kinesis está na mesma região do processador de stream.

   Se o processador de stream não estiver configurado corretamente, exclua-o com o AWS CLI comando a seguir.

   ```
   aws rekognition delete-stream-processor --name stream-processor-name
   ```

1. Crie um novo processador de fluxos com o stream de vídeo desejado do Kinesis. Para obter mais informações, consulte [Criação do processador de stream de pesquisa facial Amazon Rekognition Video](rekognition-video-stream-processor-search-faces.md#streaming-video-creating-stream-processor).

### Erro: "Coleção não encontrada"
<a name="w2aac27c79c27c13c15"></a>

A coleção Amazon Rekognition usada pelo processador de stream para combinar faces não existe ou a coleção errada está sendo usada.

**Para confirmar a coleção**

1. Use o AWS CLI comando a seguir para determinar se a coleção necessária existe. `region`Mude para a AWS região na qual você está executando seu processador de stream.

   ```
   aws rekognition list-collections --region region
   ```

   Se a coleção necessária não existir, crie uma nova coleção e adicione informações de faces. Para obter mais informações, consulte [Pesquisa de faces em uma coleção](collections.md).

1. Em sua chamada para [CreateStreamProcessor](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateStreamProcessor.html), verifique se o valor do parâmetro de entrada `CollectionId` está correto.

1. Inicie o processador de stream com o AWS CLI comando a seguir.

   ```
   aws rekognition start-stream-processor --name stream-processor-name
   ```

### Erro: “Transmissão *output-kinesis-data-stream-name* na conta *account-id* não encontrada”
<a name="w2aac27c79c27c13c17"></a>

O stream de dados de saída do Kinesis usado pelo processador de stream não existe na sua região Conta da AWS ou não está na mesma AWS região do seu processador de stream.

**Para solucionar problemas no fluxo de dados do Kinesis**

1. Use o AWS CLI comando a seguir para determinar se o stream de dados do Kinesis existe. `region`Mude para a AWS região na qual você está usando seu processador de stream.

   ```
   aws kinesis list-streams --region region
   ```

1. Se o fluxo de dados do Kinesis existir, verifique se o nome do stream é igual ao nome do stream de saída usado pelo processador de fluxos.

1. Se o stream de dados do Kinesis não existir, ele poderá existir em outra AWS região. O fluxo de dados do Kinesis deve estar na mesma região que o processador de fluxos.

1. Se necessário, crie um novo fluxo de dados do Kinesis. 

   1. Crie um fluxo de dados do Kinesis com o mesmo nome que o usado pelo processador de fluxos. Para obter mais informações, consulte [ Etapa 1: Criar um fluxo de dados](https://docs.aws.amazon.com/streams/latest/dev/learning-kinesis-module-one-create-stream.html).

   1. Inicie o processador de stream com o AWS CLI comando a seguir.

      ```
      aws rekognition start-stream-processor --name stream-processor-name
      ```

## Meu processador de fluxos não está retornando os resultados esperados
<a name="w2aac27c79c27c15"></a>

Se o processador de fluxos não estiver retornando as correspondências de face esperadas, use as informações a seguir.
+ [Pesquisa de faces em uma coleção](collections.md)
+ [Recomendações para a configuração da câmera (streaming de vídeo)](recommendations-camera-streaming-video.md)