PDA

Visualizza Versione Completa : google vision : LOGO_DETECTION



Thomas_F1
15-05-2017, 14:29
Buon pomeriggio, c'č qualcuno che gentilmente mi puņ spiegare questo programma? non dico riga per riga ma quasi :asd::mumbe:

import argparse
import base64
import picamera

from googleapiclient import discovery
from oauth2client.client import GoogleCredentials

def takephoto():
camera = picamera.PiCamera()
camera.capture('image.jpg')

def main():
takephoto() # First take a picture
"""Run a label request on a single image"""

credentials = GoogleCredentials.get_application_default()
service = discovery.build('vision', 'v1', credentials=credentials)

with open('image.jpg', 'rb') as image:
image_content = base64.b64encode(image.read())
service_request = service.images().annotate(body={
'requests': [{
'image': {
'content': image_content.decode('UTF-8')
},
'features': [{
'type': 'LOGO_DETECTION',
'maxResults': 1
}]
}]
})
response = service_request.execute()

print response

if __name__ == '__main__':
main()

John Locke
18-05-2017, 08:44
Perdona il ritardo nella risposta, ma gli impegni lavorativi mi hanno completamente occupato negli ultimi giorni :(
Lo script sostanzialmente categorizza le immagini registrate dalla camera del raspberry Pi tramite l'API di Google (cloud vision API).
In rosso, trovi i commenti al codice che hai postato


Buon pomeriggio, c'č qualcuno che gentilmente mi puņ spiegare questo programma? non dico riga per riga ma quasi :asd::mumbe:

import argparse
import base64
import picamera


#QUI ANDIAMO AD IMPORTARE LE LIBRERIE DI GOOGLE
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials

#DEFINIAMO UNA FUNZIONE PER SCATTARE UNA FOTO CON LA CAMERA DEL RASPBERRY PI
def takephoto():
camera = picamera.PiCamera()
camera.capture('image.jpg')


def main():
#CHIAMIAMO LA FUNZIONE PER SCATTARE UNA FOTO
takephoto() # First take a picture
"""Run a label request on a single image"""

#CI COLLEGHIAMO AL SERVER DI GOOGLE
credentials = GoogleCredentials.get_application_default()
service = discovery.build('vision', 'v1', credentials=credentials)

#PASSIAMO L'IMMAGINE
with open('image.jpg', 'rb') as image:
image_content = base64.b64encode(image.read())
#VOGLIAMO RICEVERE LA CLASSIFICAZIONE DI GOOGLE TRAMITE UN FORMATO JSON
service_request = service.images().annotate(body={
'requests': [{
'image': {
'content': image_content.decode('UTF-8')
},
'features': [{
'type': 'LOGO_DETECTION',
'maxResults': 1
}]
}]
})
#IN RESPONSE ABBIAMO IL NOSTRO JSON
response = service_request.execute()

print response

if __name__ == '__main__':
main()


In conclusione, questo script non fa altro che inviare una richiesta al server di Google per classificare la foto scattata dal raspberry. Google procede a classificare e a inviare la risposta (tramite formato JSON) che puņ ora essere utilizzata secondo le esigenze del programmatore.

Spero di essere stato sufficientemente chiaro :)