Vous n'avez jamais utilisé l'API Vison lors du traitement d'image. J'ai trouvé que c'était incroyable, mais je n'ai rien fait à ce sujet.
Pour le moment, j'ai décidé de l'essayer même s'il était léger, alors je l'ai écrit en Python! Cet article a été laissé en mémoire à ce moment-là ~
À propos, la procédure d'enregistrement, etc. se fait en se référant à cette zone ~
Bibliothèque cliente de l'API Vision
Les fonctions suivantes ont été utilisées cette fois. J'apporte l'explication du fonctionnaire.
** Détection automatique des objets ** L'API Cloud Vision vous permet de découvrir et d'extraire plusieurs objets dans une image à l'aide de la localisation d'objets. La localisation d'objet identifie les objets dans l'image et spécifie LocalizedObjectAnnotation pour chaque objet. Chaque LocalizedObjectAnnotation identifie des informations sur l'objet, l'emplacement de l'objet et la bordure de la zone de l'image où se trouve l'objet. La localisation d'objets identifie à la fois les objets proéminents et moins proéminents dans l'image.
C'est dur, mais pardonnez-moi s'il vous plaît ... Je voulais également les coordonnées du point de départ et les coordonnées du point final reconnues, donc je les extrait avec une technique approximative. Comment vérifier la clé json Est-ce correct? Je me sens comme ça.
ENDPOINT_URL = 'https://vision.googleapis.com/v1/images:annotate'
API_KEY = 'Clé API'
#mot-clé json
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'Si la clé existe
if RESPONSES_KEY in response.json():
# 'localizedObjectAnnotations'Si la clé existe
if LOCALIZED_KEY in response.json()[RESPONSES_KEY][0]:
# 'boundingPoly'Si la clé existe
if BOUNDING_KEY in response.json()[RESPONSES_KEY][0][LOCALIZED_KEY][0]:
# 'normalizedVertices'Si la clé existe
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])
#S'il n'y a pas assez d'informations
return False, "non", [0, 0], [0, 0]
def check_recognition_point(point_list_json, image_height, image_width):
#X point de départ (%) des coordonnées de reconnaissance
x_start_rate = point_list_json[0][X_KEY]
#Point de départ Y (%) des coordonnées de reconnaissance
y_start_rate = point_list_json[0][Y_KEY]
#Point final X (%) des coordonnées de reconnaissance
x_end_rate = point_list_json[2][X_KEY]
#Point final Y (%) des coordonnées de reconnaissance
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]
Le nom de l'objet reconnu est renvoyé dans name et les coordonnées de l'objet reconnu sont renvoyées dans start_point et end_point.
J'ai essayé des vêtements et des chaussures, mais j'ai pu le reconnaître correctement! (Bien que le nom soit assez grossier) Il serait intéressant de créer soi-même un modèle utilisant AUTOML.