2009-08-27 17 views

Respuesta

19

Google ha hecho esto INCREÍBLEMENTE simple con sus bibliotecas Zebra Crossing. Tienen soporte para hacer exploración a través de las imágenes en las siguientes plataformas:

  • J2SE
  • Android

y otros han portado a:

  • J2ME
  • CSharp
  • CPP
  • Lamer
  • iPhone
  • Bug

Como otro cartel ya se ha mencionado, en Android también se puede utilizar un Intent llamar código de barras lector con algo como:

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

el problema con ZXing - la última vez que lo comprobé - era que no funcionaba con cámara de enfoque fijo, que la mayoría de los teléfonos celulares (baratos || iPhone 2G) tenían –

0

Obviamente es posible leer el código de barras de una imagen de él. Probablemente necesite pensar en problemas como

  • Orientación; tal vez la foto no sea directa, por lo que las barras no son verticales. Además, podría estar al revés ...
  • Enfoque; ¿y si el disparo es borroso? Probablemente exista un límite donde sea imposible interpretarlo de manera segura.
  • Recortada; ¿Qué sucede si el encuadre es malo, por lo que el código completo ni siquiera está en la imagen?

Hay muchos proyectos y productos existentes que resuelven esto ... Here is one, por ejemplo. Algunas soluciones parecen no ser muy sensibles a los puntos anteriores, pero afirman poder encontrar y reconocer códigos de barras independientemente de la orientación y ubicación de la imagen, por ejemplo.

2

Para Android es muy fácil. Simplemente use el servicio proporcionado por la aplicación Barcode Scanner (dependencia). Luego, la aplicación Barcode Scanner manejará toda la parte de escaneo y simplemente le devolverá el código.

Creo que hay soluciones similares disponibles para otras plataformas, pero en Android es aún más fácil debido a su arquitectura de intención.

4

Los códigos de barras se pueden leer a través del análisis de las cámaras de los teléfonos.

Una complicación bien conocida es que las cámaras de foco fijo (como en los iPhones 2G/3G anteriores y algunos Androids) no pueden tomar instantáneas enfocadas en distancias cortas. Para contrarrestar eso, se deben usar algoritmos especiales de "desconvolución", y la última vez que verifiqué esto no fue parte del cruce de cebra.

Algunos han implementado soluciones: conozco las siguientes aplicaciones para iPhone que pueden leer UPC con cámara de foco fijo: pic2shop (Benoit Maison/Vision Smarts), RedLaser (Occipital) y ShopSavvy (grande en Japón) - consultar y creo que todos ellos tienen SDK disponibles para terceros interesados.

+0

¿Podría explicar lo que quiere decir con instantánea enfocada y el algoritmo especial de descontextualización? – unj2

+0

Es 'deconvolución' - 'descontextualizar' no es el término correcto. – mmr

1

Recomiendo elegir una solución que también decodifique códigos de barras en imágenes borrosas. Hay muchos teléfonos Android de gama baja que solo tienen cámaras de enfoque fijo y que requieren soluciones de procesamiento de imágenes más sofisticadas que el umbral binario que ofrecen las soluciones de software mencionadas anteriormente. Ejemplos de tales soluciones más avanzadas incluyen redlaser o Scandit barcode scanner SDK.

El Scandit SDK es muy fácil de integrar y viene con una edición comunitaria gratuita. También hay un product API que simplifica la conversión de números de códigos de barras en nombres de productos.

Descargo de responsabilidad: soy uno de los cofundadores de Scandit.

0

Solo para obtener una actualización de todos los novatos que buscan una respuesta a esta pregunta, Google ahora ofrece Barcode Detection Apis a través de Google Play Services para simplificar el escaneo del código de barras usando la cámara del teléfono. Ya no es necesario depender de Apis de terceros.

Cuestiones relacionadas