2009-08-27 17 views

risposta

19

Google ha reso questo INCREDIBILMENTE semplice con le loro librerie Zebra Crossing. Essi hanno il supporto per fare la scansione attraverso le immagini sulle seguenti piattaforme:

  • J2SE
  • Android

e altri hanno portato a:

  • J2ME
  • CSharp
  • CPP
  • Rim
  • iPhone
  • Bug

Come un altro poster già accennato, su Android si potrebbe anche usare un Intent per chiamare Barcode Reader con qualcosa del tipo:

public Button.OnClickListener mScan = new Button.OnClickListener() { 
    public void onClick(View v) { 
     Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
     intent.putExtra("SCAN_MODE", "ONE_D_MODE"); 
     startActivityForResult(intent, 0); 
    } 
}; 

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 0) { 
     if (resultCode == RESULT_OK) { 
      String contents = intent.getStringExtra("SCAN_RESULT"); 
      String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
      // Handle successful scan 
     } else if (resultCode == RESULT_CANCELED) { 
      // Handle cancel 
     } 
    } 
} 
+2

il problema con ZXing - l'ultima volta che ho controllato - era che non funzionava con la telecamera a fuoco fisso, che la maggior parte dei telefoni cellulari (economici || iPhone 2G) ha –

0

Ovviamente è possibile leggere il codice a barre da un'immagine di esso. Probabilmente devi pensare a problemi come

  • Orientamento; forse la foto non è dritta, quindi le barre non sono verticali. Inoltre, potrebbe essere capovolto ...
  • Focus; cosa succede se il colpo è sfocato? Probabilmente c'è un limite in cui diventa impossibile interpretarlo in modo sicuro.
  • Ritagliata; cosa succede se l'inquadratura è cattiva, quindi l'intero codice non è nemmeno nell'immagine?

Ci sono molti progetti e prodotti esistenti che risolvono questo ... Here is one, per esempio. Alcune soluzioni sembrano non essere molto sensibili a punti come quelli sopra, ma affermano di essere in grado di trovare e riconoscere i codici a barre indipendentemente dall'orientamento e dalla posizione nell'immagine, per esempio.

2

Per Android è molto semplice. Basta usare il servizio fornito dall'app Barcode Scanner (dipendenza). Quindi l'applicazione Barcode Scanner gestirà tutta la parte di scansione e ti restituirà semplicemente il codice.

Penso che soluzioni simili siano disponibili per altre piattaforme, ma in Android è ancora più semplice grazie alla sua architettura Intent.

4

I codici a barre possono essere letti mediante analisi prese dalle telecamere del telefono.

Una ben nota complicazione è che le telecamere a fuoco fisso (come sui vecchi iPhone 2G/3G e alcuni Androidi) non possono prendere la fotografia istantanea a breve distanza. Per contrastare questo, si devono usare speciali algoritmi di "deconvoluzione" e l'ultima volta che ho controllato questo non faceva parte del Zebra Crossing.

Alcuni hanno implementato soluzioni: sono a conoscenza delle seguenti app per iPhone che possono leggere UPC con telecamera a fuoco fisso: pic2shop (Benoit Maison/Vision Smarts), RedLaser (Occipital) e ShopSavvy (Big in Japan) - check li fuori e penso che tutti abbiano SDK disponibili per terze parti interessate.

+0

Puoi spiegare cosa intendi per istantanea in-focus e lo speciale algoritmo di de-convoluzione? – unj2

+0

È "deconvolution" - "de-convoluting" non è il termine corretto. – mmr

1

Suggerirei di scegliere una soluzione che decodifica anche i codici a barre in immagini sfocate. Esistono molti telefoni Android di fascia bassa che dispongono solo di telecamere a fuoco fisso e che richiedono soluzioni di elaborazione delle immagini più sofisticate rispetto alle soglie binarie offerte dalle soluzioni software sopra elencate. Esempi di tali soluzioni più avanzate includono redlaser o Scandit barcode scanner SDK.

Scandit SDK è molto facile da integrare e viene fornito con una versione community gratuita. C'è anche un product API che rende semplice convertire i codici a barre in nomi di prodotti.

Disclaimer: Sono uno dei co-fondatori di Scandit.

0

Solo per un aggiornamento di tutti i neofiti in cerca di una risposta a questa domanda, Google offre ora Barcode Detection Apis tramite Google Play Services per semplificare la scansione del codice a barre utilizzando la fotocamera del telefono. Non è più necessario dipendere da Apis di terze parti.

Problemi correlati