Dieses Mal möchte ich eine einfache Anwendung mit dem Gesichtserkennungsdienst Rekognition von Amazon erstellen. Wenn Sie die Gesichtserkennung hören, haben Sie möglicherweise ein schwieriges Bild. Wenn Sie diese Rekoginition verwenden, können Sie sie problemlos erstellen. Versuchen Sie daher, sie anhand eines Beispiels zu verwenden.
In dem Artikel wird nur die auszugsweise Quelle veröffentlicht. Wenn Sie also interessiert sind, werde ich die Quelle, die ich dieses Mal erstellt habe, in hier veröffentlichen. siehe.
Dies ist der Bildschirm der App, die ich dieses Mal erstellt habe.
Sammlungserstellung
ListCollectionsResult listCollectionsResult = rekognitionClient.listCollections(new ListCollectionsRequest());
if (!listCollectionsResult.getCollectionIds().contains(COLLECTION_ID)) {
rekognitionClient.createCollection(new CreateCollectionRequest().withCollectionId(COLLECTION_ID));
}
Anstatt einfach eine Sammlung zu erstellen, versuche ich, eine zu erstellen, wenn sie nicht existiert.
Rekognition API | Inhalt |
---|---|
listCollections | Die Liste der Sammlungen wird zurückgegeben. |
createCollection | Erstellen Sie eine Sammlung. |
Speichern Sie das Vergleichsquellbild
IndexFacesRequest indexFacesRequest = new IndexFacesRequest()
.withCollectionId(COLLECTION_ID)
.withExternalImageId(id)
.withImage(new Image().withBytes(ByteBuffer.wrap(multipartFile.getBytes())));
IndexFacesResult indexFacesResult = rekognitionClient.indexFaces(indexFacesRequest);
Rekognition API | Inhalt |
---|---|
indexFaces | Speichern Sie Ihr Gesichtsfoto in der Sammlung. |
Eigentum | Erläuterung | Verfügbare Zeichen |
---|---|---|
collectionId | Name der erstellten Sammlung | a-zA-Z0-9_.- |
externalImageId | Beliebige Daten | a-zA-Z0-9_.-: |
image | Vergleichsquellbild (binär) |
Dieses Mal verwalten wir die ID, die den Benutzer in `` `externalImageId``` eindeutig identifiziert.
SearchFacesByImageRequest searchFacesByImageRequest = new SearchFacesByImageRequest()
.withCollectionId(COLLECTION_ID)
.withImage(new Image().withBytes(ByteBuffer.wrap(multipartFile.getBytes())))
.withFaceMatchThreshold(90F)
.withMaxFaces(1);
try {
SearchFacesByImageResult searchFacesByImageResult = rekognitionClient.searchFacesByImage(searchFacesByImageRequest);
} catch (InvalidParameterException e) {
//Fehlerbehandlung
}
Bitte beachten Sie, dass "InvalidParameterException" auftritt, wenn das Gesicht vom hochgeladenen Bild nicht erkannt werden kann.
Rekognition API | Inhalt |
---|---|
searchFacesByImage | Suchen Sie aus der Sammlung anhand der zu vergleichenden Gesichtsfotos. |
Eigentum | Erläuterung | Verfügbare Zeichen |
---|---|---|
collectionId | Name der erstellten Sammlung | a-zA-Z0-9_.- |
image | Vergleichsquellbild (binär) | |
faceMatchThreshold | Ähnlichkeitsschwelle. 70 standardmäßig% | |
maxFaces | Anzahl der zu erfassenden übereinstimmenden Gesichter in absteigender Reihenfolge der Ähnlichkeit |
In diesem Beispiel haben wir versucht, diejenige mit der höchsten Ähnlichkeit von denjenigen mit 90% oder mehr Ähnlichkeit zu erhalten.
SearchFacesByImageResult kann im folgenden Format abgerufen werden. Holen Sie sich also `` `externalFaceId```.
{
"FaceMatches": [
{
"Face": {
"BoundingBox": {
"Height": number,
"Left": number,
"Top": number,
"Width": number
},
"Confidence": number,
"ExternalImageId": "string", <--Dies
"FaceId": "string",
"ImageId": "string"
},
"Similarity": number
}
],
"FaceModelVersion": "string",
"SearchedFaceBoundingBox": {
"Height": number,
"Left": number,
"Top": number,
"Width": number
},
"SearchedFaceConfidence": number
}
Wenn es mit der auf dem Bildschirm eingegebenen ID übereinstimmt, ist die Authentifizierung in Ordnung, andernfalls ist es NG.
Recommended Posts