Exemplos do Amazon Rekognition usando para SDK Kotlin - AWS SDKExemplos de código

Há mais AWS SDK exemplos disponíveis no GitHub repositório AWS Doc SDK Examples.

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á.

Exemplos do Amazon Rekognition usando para SDK Kotlin

Os exemplos de código a seguir mostram como realizar ações e implementar cenários comuns usando o AWS SDK for Kotlin com o Amazon Rekognition.

Ações são trechos de código de programas maiores e devem ser executadas em contexto. Embora as ações mostrem como chamar funções de serviço individuais, você pode ver as ações no contexto em seus cenários relacionados.

Os cenários são exemplos de código que mostram como realizar tarefas específicas chamando várias funções dentro de um serviço ou combinadas com outros Serviços da AWS.

Cada exemplo inclui um link para o código-fonte completo, onde você pode encontrar instruções sobre como configurar e executar o código no contexto.

Ações

O código de exemplo a seguir mostra como usar CompareFaces.

Para obter mais informações, consulte Comparação de faces em imagens.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun compareTwoFaces( similarityThresholdVal: Float, sourceImageVal: String, targetImageVal: String, ) { val sourceBytes = (File(sourceImageVal).readBytes()) val targetBytes = (File(targetImageVal).readBytes()) // Create an Image object for the source image. val souImage = Image { bytes = sourceBytes } val tarImage = Image { bytes = targetBytes } val facesRequest = CompareFacesRequest { sourceImage = souImage targetImage = tarImage similarityThreshold = similarityThresholdVal } RekognitionClient { region = "us-east-1" }.use { rekClient -> val compareFacesResult = rekClient.compareFaces(facesRequest) val faceDetails = compareFacesResult.faceMatches if (faceDetails != null) { for (match: CompareFacesMatch in faceDetails) { val face = match.face val position = face?.boundingBox if (position != null) { println("Face at ${position.left} ${position.top} matches with ${face.confidence} % confidence.") } } } val uncompared = compareFacesResult.unmatchedFaces if (uncompared != null) { println("There was ${uncompared.size} face(s) that did not match") } println("Source image rotation: ${compareFacesResult.sourceImageOrientationCorrection}") println("target image rotation: ${compareFacesResult.targetImageOrientationCorrection}") } }
  • Para API obter detalhes, consulte a CompareFacesreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar CreateCollection.

Para obter mais informações, consulte Criar uma coleção.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun createMyCollection(collectionIdVal: String) { val request = CreateCollectionRequest { collectionId = collectionIdVal } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.createCollection(request) println("Collection ARN is ${response.collectionArn}") println("Status code is ${response.statusCode}") } }
  • Para API obter detalhes, consulte a CreateCollectionreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar DeleteCollection.

Para obter mais informações, consulte Excluir uma coleção.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun deleteMyCollection(collectionIdVal: String) { val request = DeleteCollectionRequest { collectionId = collectionIdVal } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.deleteCollection(request) println("The collectionId status is ${response.statusCode}") } }
  • Para API obter detalhes, consulte a DeleteCollectionreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar DeleteFaces.

Para obter mais informações, consulte Excluir faces de uma coleção.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun deleteFacesCollection( collectionIdVal: String?, faceIdVal: String, ) { val deleteFacesRequest = DeleteFacesRequest { collectionId = collectionIdVal faceIds = listOf(faceIdVal) } RekognitionClient { region = "us-east-1" }.use { rekClient -> rekClient.deleteFaces(deleteFacesRequest) println("$faceIdVal was deleted from the collection") } }
  • Para API obter detalhes, consulte a DeleteFacesreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar DescribeCollection.

Para obter mais informações, consulte Descrever uma coleção.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun describeColl(collectionName: String) { val request = DescribeCollectionRequest { collectionId = collectionName } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.describeCollection(request) println("The collection Arn is ${response.collectionArn}") println("The collection contains this many faces ${response.faceCount}") } }

O código de exemplo a seguir mostra como usar DetectFaces.

Para obter mais informações, consulte Detectar faces em uma imagem.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun detectFacesinImage(sourceImage: String?) { val souImage = Image { bytes = (File(sourceImage).readBytes()) } val request = DetectFacesRequest { attributes = listOf(Attribute.All) image = souImage } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.detectFaces(request) response.faceDetails?.forEach { face -> val ageRange = face.ageRange println("The detected face is estimated to be between ${ageRange?.low} and ${ageRange?.high} years old.") println("There is a smile ${face.smile?.value}") } } }
  • Para API obter detalhes, consulte a DetectFacesreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar DetectLabels.

Para obter mais informações, consulte Detectar rótulos em uma imagem.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun detectImageLabels(sourceImage: String) { val souImage = Image { bytes = (File(sourceImage).readBytes()) } val request = DetectLabelsRequest { image = souImage maxLabels = 10 } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.detectLabels(request) response.labels?.forEach { label -> println("${label.name} : ${label.confidence}") } } }
  • Para API obter detalhes, consulte a DetectLabelsreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar DetectModerationLabels.

Para obter mais informações, consulte Detectar imagens impróprias.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun detectModLabels(sourceImage: String) { val myImage = Image { this.bytes = (File(sourceImage).readBytes()) } val request = DetectModerationLabelsRequest { image = myImage minConfidence = 60f } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.detectModerationLabels(request) response.moderationLabels?.forEach { label -> println("Label: ${label.name} - Confidence: ${label.confidence} % Parent: ${label.parentName}") } } }

O código de exemplo a seguir mostra como usar DetectText.

Para obter mais informações, consulte Detectar texto em uma imagem.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun detectTextLabels(sourceImage: String?) { val souImage = Image { bytes = (File(sourceImage).readBytes()) } val request = DetectTextRequest { image = souImage } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.detectText(request) response.textDetections?.forEach { text -> println("Detected: ${text.detectedText}") println("Confidence: ${text.confidence}") println("Id: ${text.id}") println("Parent Id: ${text.parentId}") println("Type: ${text.type}") } } }
  • Para API obter detalhes, consulte a DetectTextreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar IndexFaces.

Para obter mais informações, consulte Adicionar faces a uma coleção.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun addToCollection( collectionIdVal: String?, sourceImage: String, ) { val souImage = Image { bytes = (File(sourceImage).readBytes()) } val request = IndexFacesRequest { collectionId = collectionIdVal image = souImage maxFaces = 1 qualityFilter = QualityFilter.Auto detectionAttributes = listOf(Attribute.Default) } RekognitionClient { region = "us-east-1" }.use { rekClient -> val facesResponse = rekClient.indexFaces(request) // Display the results. println("Results for the image") println("\n Faces indexed:") facesResponse.faceRecords?.forEach { faceRecord -> println("Face ID: ${faceRecord.face?.faceId}") println("Location: ${faceRecord.faceDetail?.boundingBox}") } println("Faces not indexed:") facesResponse.unindexedFaces?.forEach { unindexedFace -> println("Location: ${unindexedFace.faceDetail?.boundingBox}") println("Reasons:") unindexedFace.reasons?.forEach { reason -> println("Reason: $reason") } } } }
  • Para API obter detalhes, consulte a IndexFacesreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar ListCollections.

Para obter mais informações, consulte Listar coleções.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun listAllCollections() { val request = ListCollectionsRequest { maxResults = 10 } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.listCollections(request) response.collectionIds?.forEach { resultId -> println(resultId) } } }
  • Para API obter detalhes, consulte a ListCollectionsreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar ListFaces.

Para obter mais informações, consulte Listar faces em uma coleção.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun listFacesCollection(collectionIdVal: String?) { val request = ListFacesRequest { collectionId = collectionIdVal maxResults = 10 } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.listFaces(request) response.faces?.forEach { face -> println("Confidence level there is a face: ${face.confidence}") println("The face Id value is ${face.faceId}") } } }
  • Para API obter detalhes, consulte a ListFacesreferência AWS SDKdo Kotlin API.

O código de exemplo a seguir mostra como usar RecognizeCelebrities.

Para obter mais informações, consulte Reconhecer celebridades em uma imagem.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

suspend fun recognizeAllCelebrities(sourceImage: String?) { val souImage = Image { bytes = (File(sourceImage).readBytes()) } val request = RecognizeCelebritiesRequest { image = souImage } RekognitionClient { region = "us-east-1" }.use { rekClient -> val response = rekClient.recognizeCelebrities(request) response.celebrityFaces?.forEach { celebrity -> println("Celebrity recognized: ${celebrity.name}") println("Celebrity ID:${celebrity.id}") println("Further information (if available):") celebrity.urls?.forEach { url -> println(url) } } println("${response.unrecognizedFaces?.size} face(s) were unrecognized.") } }

Cenários

O exemplo de código a seguir mostra como criar uma aplicação com tecnologia sem servidor que permite que os usuários gerenciem fotos usando rótulos.

SDKpara Kotlin

Mostra como desenvolver uma aplicação de gerenciamento de ativos fotográficos que detecta rótulos em imagens usando o Amazon Rekognition e os armazena para recuperação posterior.

Para obter o código-fonte completo e instruções sobre como configurar e executar, veja o exemplo completo em GitHub.

Para uma análise detalhada da origem desse exemplo, veja a publicação na Comunidade da AWS.

Serviços utilizados neste exemplo
  • APIGateway

  • DynamoDB

  • Lambda

  • Amazon Rekognition

  • Amazon S3

  • Amazon SNS

O exemplo de código a seguir mostra como:

  • Iniciar trabalhos do Amazon Rekognition para detectar elementos como pessoas, objetos e texto em vídeos.

  • Verificar o status do trabalho até que os trabalhos terminem.

  • Visualizar a lista de elementos detectados por cada trabalho.

SDKpara Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

Detecte faces em um vídeo armazenado em um bucket do Amazon S3.

suspend fun startFaceDetection( channelVal: NotificationChannel?, bucketVal: String, videoVal: String, ) { val s3Obj = S3Object { bucket = bucketVal name = videoVal } val vidOb = Video { s3Object = s3Obj } val request = StartFaceDetectionRequest { jobTag = "Faces" faceAttributes = FaceAttributes.All notificationChannel = channelVal video = vidOb } RekognitionClient { region = "us-east-1" }.use { rekClient -> val startLabelDetectionResult = rekClient.startFaceDetection(request) startJobId = startLabelDetectionResult.jobId.toString() } } suspend fun getFaceResults() { var finished = false var status: String var yy = 0 RekognitionClient { region = "us-east-1" }.use { rekClient -> var response: GetFaceDetectionResponse? = null val recognitionRequest = GetFaceDetectionRequest { jobId = startJobId maxResults = 10 } // Wait until the job succeeds. while (!finished) { response = rekClient.getFaceDetection(recognitionRequest) status = response.jobStatus.toString() if (status.compareTo("SUCCEEDED") == 0) { finished = true } else { println("$yy status is: $status") delay(1000) } yy++ } // Proceed when the job is done - otherwise VideoMetadata is null. val videoMetaData = response?.videoMetadata println("Format: ${videoMetaData?.format}") println("Codec: ${videoMetaData?.codec}") println("Duration: ${videoMetaData?.durationMillis}") println("FrameRate: ${videoMetaData?.frameRate}") // Show face information. response?.faces?.forEach { face -> println("Age: ${face.face?.ageRange}") println("Face: ${face.face?.beard}") println("Eye glasses: ${face?.face?.eyeglasses}") println("Mustache: ${face.face?.mustache}") println("Smile: ${face.face?.smile}") } } }

Detecte conteúdo impróprio ou ofensivo em um vídeo armazenado em um bucket do Amazon S3.

suspend fun startModerationDetection( channel: NotificationChannel?, bucketVal: String?, videoVal: String?, ) { val s3Obj = S3Object { bucket = bucketVal name = videoVal } val vidOb = Video { s3Object = s3Obj } val request = StartContentModerationRequest { jobTag = "Moderation" notificationChannel = channel video = vidOb } RekognitionClient { region = "us-east-1" }.use { rekClient -> val startModDetectionResult = rekClient.startContentModeration(request) startJobId = startModDetectionResult.jobId.toString() } } suspend fun getModResults() { var finished = false var status: String var yy = 0 RekognitionClient { region = "us-east-1" }.use { rekClient -> var modDetectionResponse: GetContentModerationResponse? = null val modRequest = GetContentModerationRequest { jobId = startJobId maxResults = 10 } // Wait until the job succeeds. while (!finished) { modDetectionResponse = rekClient.getContentModeration(modRequest) status = modDetectionResponse.jobStatus.toString() if (status.compareTo("SUCCEEDED") == 0) { finished = true } else { println("$yy status is: $status") delay(1000) } yy++ } // Proceed when the job is done - otherwise VideoMetadata is null. val videoMetaData = modDetectionResponse?.videoMetadata println("Format: ${videoMetaData?.format}") println("Codec: ${videoMetaData?.codec}") println("Duration: ${videoMetaData?.durationMillis}") println("FrameRate: ${videoMetaData?.frameRate}") modDetectionResponse?.moderationLabels?.forEach { mod -> val seconds: Long = mod.timestamp / 1000 print("Mod label: $seconds ") println(mod.moderationLabel) } } }

O exemplo de código a seguir mostra como criar um aplicativo que usa o Amazon Rekognition para detectar objetos por categoria em imagens.

SDKpara Kotlin

Mostra como usar o Amazon Rekognition API Kotlin para criar um aplicativo que usa o Amazon Rekognition para identificar objetos por categoria em imagens localizadas em um bucket do Amazon Simple Storage Service (Amazon S3). O aplicativo envia ao administrador uma notificação por e-mail com os resultados usando o Amazon Simple Email Service (AmazonSES).

Para obter o código-fonte completo e instruções sobre como configurar e executar, veja o exemplo completo em GitHub.

Serviços utilizados neste exemplo
  • Amazon Rekognition

  • Amazon S3

  • Amazon SES