2009-08-27 12 views

Répondre

19

Google a fait ce INCREDIBLEMENT simple avec leurs bibliothèques Zebra Crossing. Ils bénéficient d'un soutien pour faire la recherche automatique via des images sur les plates-formes suivantes:

  • J2SE
  • Android

et d'autres ont porté sur:

  • J2ME
  • CSharp
  • RPC
  • Rim
  • iPhone
  • Bug

Comme une autre affiche déjà mentionné, sur Android, vous pouvez également utiliser un Intent pour appeler Barcode Reader avec quelque chose comme:

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

le problème avec ZXing - la dernière fois que j'ai vérifié - était qu'il ne fonctionnait pas avec la caméra à foyer fixe, que la plupart des téléphones cellulaires (0 || iPhone 2G) ont –

0

De toute évidence, il est possible de lire le code à barres à partir d'une image de celui-ci. Vous devez probablement penser à des problèmes tels que

  • Orientation; peut-être que la photo n'est pas rectiligne, les barres ne sont donc pas verticales. En outre, il pourrait être à l'envers ...
  • Focus; Que faire si le tir est flou? Il y a probablement une limite où il devient impossible de l'interpréter en toute sécurité.
  • Cropped; Que faire si le cadrage est mauvais, donc le code entier n'est même pas dans l'image?

Il existe de nombreux projets et produits existants qui résolvent ce problème ... Here is one, par exemple. Certaines solutions ne semblent pas très sensibles à des points comme ceux ci-dessus, mais prétendent pouvoir trouver et reconnaître des codes à barres indépendamment de l'orientation et de l'emplacement dans l'image, par exemple.

2

Pour Android, c'est très facile. Utilisez simplement le service fourni par l'application Barcode Scanner (dépendance). Ensuite, l'application Barcode Scanner va gérer toute la partie de numérisation et vous renverra simplement le code.

Je pense que des solutions similaires sont disponibles pour d'autres plates-formes, mais dans Android, c'est encore plus facile en raison de son architecture Intent.

4

Les codes à barres peuvent être lus à partir des analyses effectuées sur les appareils photo du téléphone.Une complication bien connue est que les caméras à mise au point fixe (comme sur les anciens iPhones 2G/3G et certains Androïdes) ne peuvent pas prendre de photos instantanées sur de courtes distances. Pour contrer cela, des algorithmes spéciaux de «déconvolution» doivent être utilisés - et la dernière fois que j'ai vérifié que cela ne faisait pas partie du Zebra Crossing. Certains ont mis en œuvre des solutions - je suis au courant des applications suivantes pour iPhone qui peuvent lire des CUP avec caméra à mise au point fixe: Pic2shop (Benoit Maison/Vision Smarts), RedLaser (Occipital) et ShopSavvy (Big au Japon) - vérifier les sortir et je pense que tous ont des SDK disponibles pour les tiers intéressés.

+0

Pouvez-vous expliquer ce que vous entendez par instantané? l'algorithme spécial de convolution? – unj2

+0

C'est 'deconvolution' - 'de-convoluting' n'est pas le bon terme. – mmr

1

Je vous recommande de choisir une solution qui décode également les codes à barres dans les images floues. Il existe de nombreux téléphones Android bas de gamme qui ne disposent que de caméras à focale fixe et qui nécessitent des solutions de traitement d'image plus sophistiquées que le seuillage binaire que proposent les solutions logicielles listées ci-dessus. Des exemples de telles solutions plus avancées incluent redlaser ou le Scandit barcode scanner SDK.

Le SDK de Scandit est très facile à intégrer et est livré avec une édition communautaire gratuite. Il y a aussi un product API qui facilite la conversion des codes à barres en noms de produits. Clause de non-responsabilité: Je suis l'un des co-fondateurs de Scandit.

0

Juste pour une mise à jour à tous les débutants à la recherche d'une réponse à cette question, Google offre maintenant Barcode Detection Apis via Google Play Services pour simplifier le code à barres de numérisation en utilisant l'appareil photo du téléphone. Plus besoin de dépendre des Apis tiers.