2016-02-18 26 views
7

Sembra che mi sia ritrovato nelle profonde erbacce dell'API di Google Vision per la scansione di codici a barre. Forse la mia mente è un po 'fritta dopo aver esaminato tutti i tipi di librerie alternative (ZBar, ZXing e anche alcune implementazioni di terze parti a costo zero), ma sto avendo qualche difficoltà a trovare qualche informazione su dove posso implementare una sorta di scansione regione che limita.Area di rilevamento limite nell'API di Vision

Il caso d'uso è piuttosto semplice: se sono un utente che punta il telefono in una scatola con più codici a barre dello stesso tipo (pensate alle etichette di spedizione qui), voglio puntare esplicitamente qualche piccolo mirino o allineamento dritto -ripendete sullo schermo esattamente ciò che sto cercando di catturare, senza dovermi preoccupare di nulla al di fuori di quell'area di interesse che mi dà dei risultati di scansione che non voglio.

Il caso precedente viene gestito nella maggior parte delle altre librerie Android che ho visto, prendendo in considerazione un Rect con coordinate relative o assolute e anche questa fa parte del sistema di risultati dei metadati di AVCapture di iOS (utilizza un CGRect relativo, ma davvero lo stesso concetto).

ho scavato piuttosto profondo in app di esempio per il codice a barre, lettore di here, ma l'implementazione è un po 'opaca per ottenere qualcosa, ma l'alto livello dettagli di implementazione giù.

Sembra una brutta patch, in caso di rilevamento riuscito di un codice a barre in qualsiasi punto all'interno della cornice di anteprima della telecamera, a semplice no-op su codici a barre al di fuori di un'area di interesse, dal momento che il dispositivo sta ancora lavorando per calcolare quei fotogrammi.

Mi manca qualcosa di molto semplice e ovvio su questo? Qualche idea su come implementarla in modo pulito, altrimenti?

Mille grazie per il tuo tempo nella lettura di questo!

risposta

2

Attualmente l'API non ha un'opzione per limitare l'area di rilevamento. Ma potresti ritagliare l'immagine di anteprima prima che venga passata nel rilevatore di codici a barre. Vedi qui per una descrizione di come avvolgere un rivelatore con la propria classe:

Mobile Vision API - concatenate new detector object to continue frame processing

Faresti implementare il metodo "localizzare" per prendere il frame ricevuto dalla fotocamera, creare una versione ritagliata del telaio e passare attraverso il rivelatore sottostante.

+0

L'API 'Mobile Vision' di Google è gratuita? Ho bisogno di usarlo per il rilevamento del volto. Non ci sono informazioni sui prezzi né un mezzo diretto per contattare l'assistenza sul sito web. – techno

+0

Sì, è gratuito. – pm0733464

+0

Grazie per l'aggiornamento su questo. Puzza di sentire che non ci sono implementazioni dirette a cui aggrapparsi per questo, ma ho seguito il tuo consiglio e ho una versione funzionante di un'area di scansione ritagliata. Ho anche due versioni: una vera copia di una bitmap che viene inviata al client di rilevamento e una semplice, "Rect X contiene un vertice di Scanning Result Rect Y?" nel callback della fabbrica grafica di esempio. –