1
resposta

Código para indexar as imagens não funciona

Após executar o código para indexar as imagens ao executar

❯ aws rekognition list-faces --collection-id faces

A lista indexada vem vazia:

{
    "Faces": [],
    "FaceModelVersion": "6.0"
}

Meu código está assim:

import boto3

s3 = boto3.resource("s3")
client = boto3.client("rekognition")


def lista_imagens():
    image = []
    bucket = s3.Bucket("jorgerabellodev-imagens")
    for imagem in bucket.objects.all():
        image.append(imagem.key)
    print(image)
    return image


def indexa_colecao(images):
    for image in images:
        response = client.index_faces(
            CollectionId="faces",
            DetectionAttributes=[],
            ExternalImageId=image[:-4],
            Image={
                "S3Object": {"Bucket": "jorgerabellodev-imagens", "Name": image},
            },
        )


imagens = lista_imagens()
indexa_colecao(imagens)
1 resposta

Olá Jorge.

Tudo bem?

Desculpa a demora, estou respondendo esse tópico para tentar ajudar você e outros alunos que estiverem com essa mesma dúvida. Valeu :)

Pelo código que você compartilhou, parece que você está tentando indexar as imagens usando o serviço Amazon Rekognition. No entanto, a lista que você recebe está vazia. Vamos analisar algumas possíveis causas para esse problema.

  1. Verifique se as imagens estão sendo listadas corretamente: Certifique-se de que as imagens estão sendo listadas corretamente no bucket "jorgerabellodev-imagens". Você pode adicionar um print dentro do loop for em lista_imagens() para verificar se as imagens estão sendo recuperadas corretamente.

  2. Verifique as permissões do bucket: Verifique se o bucket "jorgerabellodev-imagens" tem as permissões corretas para o serviço Rekognition. Certifique-se de que o serviço Rekognition tenha permissão para acessar o bucket e as imagens dentro dele. Você pode revisar as permissões do bucket nas configurações do Amazon S3.

  3. Verifique se a coleção "faces" existe: Certifique-se de que a coleção "faces" já foi criada no serviço Rekognition. Se a coleção não existir, você pode criar uma usando o comando aws rekognition create-collection --collection-id faces.

  4. Verifique se as imagens já foram indexadas anteriormente: Verifique se as imagens que você está tentando indexar já foram indexadas anteriormente. O serviço Rekognition não permite a indexação de imagens duplicadas. Portanto, se as imagens já foram indexadas anteriormente, elas não serão indexadas novamente.

Essas são algumas possíveis causas para o problema que você está enfrentando. Verifique esses pontos e veja se algum deles resolve o seu problema. Se ainda tiver dúvidas, não hesite em perguntar. Estou aqui para ajudar!

Espero ter ajudado e bons estudos!