Sie haben die Vison-API während der Bildverarbeitung noch nie verwendet. Ich fand es großartig, aber ich habe nichts dagegen getan.
Vorerst habe ich beschlossen, es zu versuchen, auch wenn es hell war, also habe ich es in Python geschrieben! Dieser Artikel wurde zu dieser Zeit als Memo hinterlassen ~
Übrigens, der Registrierungsvorgang usw. erfolgt unter Bezugnahme auf diesen Bereich ~
Die folgenden Funktionen wurden diesmal verwendet. Ich bringe die Erklärung vom Beamten.
** Automatische Erkennung von Objekten ** Mit der Cloud Vision-API können Sie mithilfe der Objektlokalisierung mehrere Objekte in einem Bild erkennen und extrahieren. Die Objektlokalisierung identifiziert die Objekte im Bild und gibt LocalizedObjectAnnotation für jedes Objekt an. Jede LocalizedObjectAnnotation identifiziert Informationen über das Objekt, den Standort des Objekts und den Rand des Bereichs im Bild, in dem sich das Objekt befindet. Die Objektlokalisierung identifiziert sowohl markante als auch weniger markante Objekte im Bild.
Es ist rau, aber bitte vergib mir ... Ich wollte auch die erkannten Startpunkt- und Endpunktkoordinaten, also ziehe ich sie mit einer groben Technik heraus. So überprüfen Sie den JSON-Schlüssel Ist das richtig? Ich fühle mich so.
ENDPOINT_URL = 'https://vision.googleapis.com/v1/images:annotate'
API_KEY = 'API-Schlüssel'
#json Schlüsselwort
RESPONSES_KEY = 'responses'
LOCALIZED_KEY = 'localizedObjectAnnotations'
BOUNDING_KEY = 'boundingPoly'
NORMALIZED_KEY = 'normalizedVertices'
NAME_KEY = 'name'
X_KEY = 'x'
Y_KEY = 'y'
def get_gcp_info(image):
image_height, image_width, _ = image.shape
min_image = image_proc.exc_resize(int(image_width/2), int(image_height/2), image)
_, enc_image = cv2.imencode(".png ", min_image)
image_str = enc_image.tostring()
image_byte = base64.b64encode(image_str).decode("utf-8")
img_requests = [{
'image': {'content': image_byte},
'features': [{
'type': 'OBJECT_LOCALIZATION',
'maxResults': 5
}]
}]
response = requests.post(ENDPOINT_URL,
data=json.dumps({"requests": img_requests}).encode(),
params={'key': API_KEY},
headers={'Content-Type': 'application/json'})
# 'responses'Wenn der Schlüssel existiert
if RESPONSES_KEY in response.json():
# 'localizedObjectAnnotations'Wenn der Schlüssel existiert
if LOCALIZED_KEY in response.json()[RESPONSES_KEY][0]:
# 'boundingPoly'Wenn der Schlüssel existiert
if BOUNDING_KEY in response.json()[RESPONSES_KEY][0][LOCALIZED_KEY][0]:
# 'normalizedVertices'Wenn der Schlüssel existiert
if NORMALIZED_KEY in response.json()[RESPONSES_KEY][0][LOCALIZED_KEY][0][BOUNDING_KEY]:
name = response.json()[RESPONSES_KEY][0][LOCALIZED_KEY][0][NAME_KEY]
start_point, end_point = check_recognition_point(
response.json()[RESPONSES_KEY][0][LOCALIZED_KEY][0][BOUNDING_KEY][NORMALIZED_KEY],
image_height,
image_width
)
print(name, start_point, end_point)
return True, name, start_point, end_point
print("non", [0, 0], [0, 0])
#Wenn nicht genügend Informationen vorhanden sind
return False, "non", [0, 0], [0, 0]
def check_recognition_point(point_list_json, image_height, image_width):
#X Startpunkt (%) der Erkennungskoordinaten
x_start_rate = point_list_json[0][X_KEY]
#Y Startpunkt (%) der Erkennungskoordinaten
y_start_rate = point_list_json[0][Y_KEY]
#X-Endpunkt (%) der Erkennungskoordinaten
x_end_rate = point_list_json[2][X_KEY]
#Y-Endpunkt (%) der Erkennungskoordinaten
y_end_rate = point_list_json[2][Y_KEY]
x_start_point = int(image_width * x_start_rate)
y_start_point = int(image_height * y_start_rate)
x_end_point = int(image_width * x_end_rate)
y_end_point = int(image_height * y_end_rate)
return [x_start_point, y_start_point], [x_end_point, y_end_point]
Der Name des erkannten Objekts wird in name zurückgegeben, und die Koordinaten des erkannten Objekts werden in start_point und end_point zurückgegeben.
Ich habe es mit Kleidung und Schuhen versucht, aber ich konnte es richtig erkennen! (Obwohl der Name ziemlich rau war) Es wäre interessant, ein Modell mit AUTOML selbst zu erstellen.
Recommended Posts