Newsgroup: it.comp.www.php
Titolo: Leggere codici a barre con la webcam

Salve,
cercando su Google ho trovato questo filmato: 
http://www.youtube.com/watch?v=Sv28MUMM_EA
Ho successivamente chiesto ad una software house la possibilità di 
creare un lettore di codice a barre per l'utente domestico quindi 
potendo utilizzare la propria webcam ma mi hanno risposto picche ovvero 
che non è possibile associare la lettura del codice a barre ad un 
database usando la piattaforma php+mysql per avere ad esempio la 
descrizione dell'oggetto "letto".
Voi che dite ?
Saluti !
GbMax78

Voi che dite ?
E' complicato, perche' devi uploadare l'immagine sul server, e non e'
detto che tu lo possa fare facilmente.
Forse, con qualche accrocco in Flash che acceda alla webcam... allora
si'.
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

 si'.
Guardando altri filmati si cita proprio l'applicazione in Flash per 
accedere alla cam tramite ad esempio una web page e si vede poi la 
lettura del codice a barre, chissà se questo poi possa essere associato 
ad un db...
Saluti !
GbMax78

 Voi che dite ?
Che il problema è nell'uso del verbo "associare".
È chiaro che puoi "associare", crei una webapp che riceve i dati e li 
salvi.

 GbMax78

 vedi gazzettadellosport (usano il 2d)
Ho cercato sul sito della gazzetta dello sport ma non ho capito dove sia 
cio' che mi interessa !
Intanto ti ringrazio per la risposta ! :)
Saluti !
GbMax78

 GbMax78

> 
http://www.bananaffair.it/barcode-2d-lettore-generatore/
Non è il classico codice a barre, questo lo sapevo anch'io che si 
potesse leggere con cellulari ed affini...



Si chiama codice QR ma è una estensione a due dimensioni del codice a 
barre, se puoi fare quello figurati i codici a barre classici.
Il punto è che non si capisce cosa stai chiedendo, tranne che vuoi 
"associare a php+mysql".
Secondo me la parte difficile per la software house è capire la 
richiesta del cliente, probabilmente è per questo che hanno detto che 
non si può fare.

barre secondo te ?
Non ho capito.
Ti dico come si potrebbe fare: un accrocco Flash accede alla Webcam, e
nella versione "gaò" si limita a uploadare tutta la JPEG su un sito.
Una versione più raffinata potrebbe estrarre una scanline dal frame, e
verificare che abbia valori di contrasto ragionevoli.
A quel punto il sito riceve l'immaginina, e decodifica il codice, dopo
di che ci puo' fare quel che vuole, per esempio rimandare al Flash una
sequenza XML con il codice stesso per fargli fare "DING!", oppure, che
so, un link alla pagina del prodotto, o cose cosi'.


 non si può fare.
Si forse hai ragione, la mia richiesta è quella di poter leggere, 
utilizzando principalmente una webcam (o un barcode reader per chi 
l'avesse) codici a barre stampati su dei prodotti in vendita in Italia 
per essere poi riconosciuti/collegati al database che tirerebbe fuori 
determinate caratteristiche/descrizioni il tutto però all'interno di una 
pagina web perchè una situazione del genere credo sia già ampiamente 
disponibile a livello desktop che potrebbe in seconda battuta tornare 
comodo sui mobile devices tipo Android, Apple etc.
La software house interpellata mi ha di recente risposto "We will not be 
able to write code to recognize barcodes or read from barcode images on 
the website. There are some open source software available, but only as 
desktop applications."
In conclusione mi sono spiegato male io oppure quello che cerco di fare 
non è possibile o altra ipotesi la software house non è riuscita a 
trovare una soluzione che invece esiste ?
Saluti !
GbMax78

 GbMax78
Ti hanno semplicemente detto che non sono in grado di farlo lato
server, ma ci sono varie alternative lato client.
Io la butto li: una chiamata ajax al tuo server con l'url della pagina
che contiene il codice, da php parsi la pagina, trovi il codice e lo
leggi.
Assomiglia molto a un bagno di sangue, cmq.
Il discorso è che da php non puoi accedere alla webcam, questo
dovresti averlo chiaro, php termina il suo lavoro quando la pagina è
stata caricata, dopo devi andare di tecnologie client side: js, java,
flash, etc... (html5?)

Provo a darti qualche input, anche se devo premetterti che non ho la 
soluzione definitiva...
1. carichi una pagina di avvio nel browser contenente "qualcosa" scritto 
in Flash/AS oppure in Java.
2. questo "qualcosa" accede alla webcam in locale e controlla, ad un 
certo frame-rate (tipo 6fps), quello che gli arriva in input della webcam.
3. Se riconosce nel fotogramma qualcosa che somiglia ad un codice a 
barre tenta di interpretarlo e se l'operazione va a buon fine allora 
effettua una chiamata asincrona al server.
4. Sul server una combinazione di PHP+MySQL (o quello che vuoi, questo 
mi pare di capire sia il problema minore) restituisce l'articolo 
richiesto, se presente nel database.
5. Il "qualcosa" nel browser intanto si accorge che il server gli ha 
risposto e provvede a chiudere il flusso dati proveniente dalla webcam e 
ad aggiornare il contenuto della pagina.
Ecco, il tuo problema è il "qualcosa" di cui sopra. A me viene in mente 
una sola cosa per realizzare qualcosa di simile: ARToolKit. La versione 
base è scritta in C, ma ne esistono porting un pò per tutti i linguaggi, 
Flash incluso. Credo però che sia come sparare ad una mosca con 
l'artiglieria pesante: questa roba si usa per la realtà aumentata, il 
pattern recognition, per implementare le gestures e per altre cose fighe.
Ti posto un paio di video per farti capire di cosa stiamo parlando:
http://www.youtube.com/watch?v=4XZC76lQ2hc
http://www.youtube.com/watch?v=b0khQEv7v9s
Questa è la pagina del porting per Flash:
http://www.libspark.org/wiki/saqoosha/FLARToolKit/en
Spero il tuo giapponese sia buono...
Ho visto dei progettini funzionanti dal vivo qualche tempo fa, ma il 
poco tempo libero (ahimè) mi ha impedito di smanettarci di persona..
Spero di esserti stato utile.
- Antonio

 - Antonio

 questa roba si usa per la realtà aumentata, 
a me il concetto di realtà aumentata sfugge, ovvero come fa la realtà ad
essere aumentata?
J.

 essere aumentata?
Beh, per realtà aumentata si intende l'aggiunta di elementi virtuali 
(cioè generati da una macchina) al mondo reale. E' ovvio che questo non 
può avvenire direttamente, visto che non abbiamo una connessione alla 
realtà alternativa ai cinque sensi (tipo in Matrix). Per ora bisogna 
accontentarsi delle interfacce aptiche che abbiamo (schermi, caschetti, 
guanti, exascheletri).
In questo senso non si "aumenta" la realtà in sé, ma si aumenta la 
"percezione" della realtà indossando (per ora si intende in senso 
letterale!) delle opportune interfacce.

PS: i due video che ho postato non sono forse un piccolo esempio di 
realtà aumentata? Alcune cose che vedi in quei video nella realtà non 
esistono... ;-)
PPS: quello che distingue la realtà aumentata dagli effetti speciali 
classici è che il tutto deve avvenire in real-time (o con bassissime 
latenze), altrimenti non vale!

 WOW!
Non ho nemmeno io mai visto qualcosa di simile, intanto mi guardo anche 
gli altri video !
GbMax78

 flash, etc... (html5?)
La mia propensione verso PHP è soltanto legata ad un minimo di 
dimestichezza verso il linguaggio e quanto gira sul server nulla di 
piu', se dovesse esserci una best way pur non "capendola" a livello 
tecnico ne trarrei comunque vantaggio finale per risolvere al meglio il 
mio "problema" !
Saluti !
GbMax78

 Spero di esserti stato utile.
Mi hai dato ottime dritte il brutto, come già scritto sopra, sarà 
trovare qualcuno in grado di mettere insieme tutti guesti elementi ! :)
Saluti !
GbMax78

 letterale!) delle opportune interfacce.
Non esiste differenza tra la realtà in se e la percezione della realtà,
perchè la nostra realtà è sempre la percezione che noi abbiamo di essa.
Tornando ai video, quello che crea i bambocci, una volta che sono stati
creati essi esistono, ma è come quando una fabbrica crea un giocattolo,
anche in questo caso prima non c'era poi c'è, è sempre un caso di realtà
aumentata?
J.

 mio "problema" !
La best way nel tuo caso sarebbe di usare flash, fargli leggere il codice 
a barre, farglielo interpretare e mandare al server solo la stringa 
risultante (una quindicina di caratteri per gli EAN, fino a 4 KB per i QR-
code), che e` comunque meno scomodo di mandare una bitmap, che non puoi 
comprimere in jpeg o in qualsiasi altro formato lossy, al server per 
fargliela interpretare.
Bye.

 fargliela interpretare.
Ho capito la procedura però la jpeg che viene inviata al server implica 
che su questo ci sia tutto un archivio di jpeg per riuscire ad avere il 
confronto quindi se tanto mi da tanto dovendo per ipotesi far 
riconoscere 100 prodotti lato server dovrei avere la scansione di 100 
jpeg di codici a barre o sbaglio ?
Saluti !
GbMax78

 jpeg di codici a barre o sbaglio ?
Ti ha detto esplicitamente che _non_ puoi usare jpeg perché è un formato 
lossy, cioè a perdita di informazione, e ha suggerito di far leggere il 
codice dal client e di usare il server per fornire le informazioni 
relative a quel codice che sarà da pochi byte fino a 4kB.
Se vuoi gestire cento prodotti ovviamente dovrai inserire tutti cento 
codici sul server, sono gli identificativi dei prodotti.

 confronto
No. Non devi fare il confronto. Devi usare una libreria che decodifica i 
codici a barre. Pensa a quante png dovresti avere per un banale EAN-13 a 
13 cifre, altrimenti...
Bye.