Ausgehend von Letztes Mal habe ich versucht, dieselbe Person mithilfe von Amazon Rekogniton zu erkennen.
Dieselbe Person wird mithilfe der API compare_faces von Amazon Rekognition erkannt. Ich gebe zwei Bilder in compare_faces ein, das erste ist das Bild der Person, die ich erkennen möchte, und das zweite ist das zu erkennende Bild.
OS:Windows10 Sprache: Python 3.7
Legen Sie die folgenden Anmeldeinformationen in AWS CLI fest (aws configure).
AWS Access Key ID AWS Secret Access Key Default region name Default output format
face_compare.py
import boto3
import sys
from PIL import Image,ImageDraw
#Argumentprüfung
if len(sys.argv) != 3:
print('Bitte geben Sie zwei Bilddateien als Argumente an.')
exit()
#Erstellen Sie einen Client für die Erkennung
client = boto3.client('rekognition')
#Vergleichen Sie mit zwei Bilddateien als Argumente_Gesichter laufen lassen
with open(sys.argv[1],'rb') as source:
with open(sys.argv[2],'rb') as target:
response = client.compare_faces(SourceImage={'Bytes':source.read()},TargetImage={'Bytes':target.read()})
#Wird dieselbe Person nicht erkannt, endet der Vorgang
if len(response['FaceMatches'])==0:
print('Dieselbe Person wurde nicht erkannt.')
else:
#Erstellen Sie eine Bilddatei für einen rechteckigen Satz basierend auf der zweiten Bilddatei
img = Image.open(sys.argv[2])
imgWidth,imgHeight = img.size
draw = ImageDraw.Draw(img)
#Führt eine rechteckige Satzverarbeitung für die Anzahl der erkannten Gesichter durch
for faceMatch in response['FaceMatches']:
#Informationen zur Position / Größe des Gesichts erhalten Sie von BoundingBox
box = faceMatch['Face']['BoundingBox']
left = imgWidth * box['Left']
top = imgHeight * box['Top']
width = imgWidth * box['Width']
height = imgHeight * box['Height']
#Stellen Sie die Positions- und Größeninformationen des Rechtecks ein
points = (
(left,top),
(left + width,top + height)
)
#Schließen Sie das Gesicht in ein Rechteck ein
draw.rectangle(points,outline='lime')
#Bilddatei speichern
img.save('detected_' + sys.argv[2])
#Bilddatei anzeigen
img.show()
Der Umriss ist wie folgt.
(1) Beziehen Sie aus den Argumenten zum Zeitpunkt der Programmausführung zwei Bilddateien, die in Rekognition eingegeben werden sollen. (2) Führen Sie die compare_faces von Rekognition mit der Bilddatei in (1) oben als Argument aus. (3) Erhalten Sie die erkannten Informationen zu Gesichtsposition / -größe aus Jsons von Rekognition zurückgegebenen Face Matches / Bounding Box. ④ Erstellen Sie eine Bilddatei mit einem Rechteck von ③ oben und zeigen Sie sie an.
python face_compare.py ichiro1.jpg ichiro2.jpg
Er entdeckte Ichiro.
Ähnlich wie bei detect_faces in Last time können Sie die Bilderkennung mithilfe der API problemlos durchführen. Mit compare_faces können Sie die Person, die Sie finden möchten, einfach aus einer großen Anzahl von Bildern extrahieren. Laut der AWS-Site wird es von Zeitungsunternehmen und Fotodienstleistungsunternehmen in Japan verwendet.