Arduino e OpenCv

buongiorno a tutti

secondo le vostre conoscenze informatiche sicuramente migliori delle mie si potrebbe usare una interfaccia grafica per OpenCv e cercare il movimento di un oggetto, estrapolalarne le coordinate e infine comandare con arduino due servo

Grazie CarloMaragno


P.S. vorrei imitare questo topic http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1282814307/15 ma senza usare roborleam

Ciao, è fattibile però devi usare Processing sul pc (openCV è supportato in questo linguaggio e c'è la libreria pronta). Ecco come potresti procedere: installa processing e la libreria openCV sul pc, carica il file di esempio di openCV e aggiusta lo sketch in base alle tue esigenze, calcola i valori da mandare ai servi su arduino, aggiungi la comunicazione seriale al tuo sketch e tramite questa invia i movimenti dei servi calcolati in processing ad arduino. Non dovrebbe essere molto impegnativo, gli ho dato un'occhiata la scorsa settimana perchè dovrei farlo anche io a breve... OpenCV sembra interessante ma a detta di molti vuole un bel processore, ne ha di calcoli da fare... Saluti

grazie ma scusa lo stech di opencv dove lo devo mettere, io pensavo di fare cosi:

eseguo lo stech sul mio pc con webcam lo stec mi manda xe y io invio x e y a arduino

grazie e se puoi tu come faresti

Non puoi mandargli solo le coordinate x e y dell'immagine inquadrata in openCV, devi fare anche un minimo di operazioni per rapportare il valore da passare ai servi... Per esempio ad un servo standard quando gli passi il valore 0 ruota l'albero ad un estremo, mentre se gli passi 179 va diretto dall'altra parte; supponendo che la webcam sta centrata e ti trova un'immagine alle coordinate 0,0 ti ritroveresti la webcam completamente rivolta a destra che punta il soffitto e perderesti di vista il soggetto inquadrato (non so se mi sono spiegato bene, scusami). C'è da vedere un attimo come calcolare il valore da passare ai servi Ciao.

Salve a tutti, tutto bene? Ho sentito parlare di OpenCV e subito mi sono precipitato, sto usando da un bel pò le librerie in questione ,tutto OK ,ma il PC scalda. E' possibile intercettare il viso di una persona, o inseguire un oggetto, vari modi applicativi. Magari ne possiamo parlare. Ciao a tutti.

Certo che ne possiamo parlare, in fondo openCV sembra parecchio interessante... Dalle prove che ho fatto e da quanto si legge in giro, openCV ha bisogno di parecchie risorse visto che deve fare tanti calcoli per riconoscere il soggetto dalle immagini catturate da webcam o telecamere, ecco perchè scalda. L'ho provato su un pc proprio rottame (processore amd athlon 700 MHz con 256 di ram) e va a scatti se supero la risoluzione di 240 x 480. A breve farò altre prove su pc decisamente più performanti. Che sei riuscito a fare giusto per curiosità? Saluti

Ho implementato un sistema di visione artificiale stereoscopica su un robot mobile che oltre a riconoscere numerosi oggetti e visi, è in grado di interagire con le persone e muoversi liberamente in ambienti sconosciuti grazie all' implementazione di algoritmi per la navigazione autonoma in-door.

Interessante!
Il progetto è pubblicato da qualche parte?

Interessante. Vediamo come si evolve questa discussione :)

Proprio adesso ho pubblicato su youtube un video che mostra tali capacità:

http://www.youtube.com/watch?v=9rhXgkFPKM8&feature=mfu_in_order&list=UL

CarloMaragno: grazie ma scusa lo stech di opencv dove lo devo mettere, io pensavo di fare cosi:

Le OpenCV non sono semplici da usare, è "solo" una libreria di funzioni utili per la visione artificiale, però se non sai come implementarla non è che ci fai molto. Ti consiglio di dare un'occhiata RoboRealm, molto facile da usare, abbastanza performante, ha già lo sketch pronto per Arduino che fa quello che chiedi e molto altro ancora. Unico neo di RoboRealm è che non è più free, si può usare liberamente per 30 giorni, versione full, dopo di che tocca pagare la licenza, solo 80$, però se scrivi direttamente all'autore è facile ottenere una estensione del periodo di prova.

A mio avviso, visto l'esperienza personale, le OpenCV non sono così complicate, basta una buona conoscenza di "C" un buon libro e tanta buona pazienza. :)

E hardware potente, perche' quando io ci ho lavorato ho visto che con hardware scarso non andavo da nessuna parte... Fede

ok....

ma scusatemi open cv non lo eseguo sul pc e poi tramite il seriare do le coordinare ad Arduino. per la conversione pensavo a un progamma che avevo fatto in phython: in buona sostanza era una proporzione per esempio

40/680=x/180 dove: 40: coordinata opencv in pixel 680: risoluzione massima orizzontale x: gradi servo 180: ampiezza massima servo

tubincolo: A mio avviso, visto l'esperienza personale, le OpenCV non sono così complicate, basta una buona conoscenza di "C" un buon libro e tanta buona pazienza. :)

che libro consigli? io ci avevo dato un'occhita per quanto rigurda la doppia telecamera per l'ottenimento di una mappa di profondita ma non ci ho combinato nulla..

CarloMaragno: ok....

ma scusatemi open cv non lo eseguo sul pc e poi tramite il seriare do le coordinare ad Arduino. per la conversione pensavo a un progamma che avevo fatto in phython: in buona sostanza era una proporzione per esempio

40/680=x/180 dove: 40: coordinata opencv in pixel 680: risoluzione massima orizzontale x: gradi servo 180: ampiezza massima servo

giusto

Scusa per il ritardo.... Come primo libro potresti iniziare da "Learning OpenCV" di Gary Bardski

Se utilizzi questa semplice proporzione il tuo sistema che regge le ccd si muoverà in continuazione. Ti consiglio di utilizzare dei calcoli con logica fuzzy in modo che la telecamera venga mossa con un effetto di "smoothing" quando aggancia l'oggetto che vuoi riconoscere per fare un buon tracking. Inoltre questo ti permetterà di avere una variazione sulle velocità e le accelerazioni con cui il sistema esegue il tracking di un oggetto.

Federico:

CarloMaragno: ok....

ma scusatemi open cv non lo eseguo sul pc e poi tramite il seriare do le coordinare ad Arduino. per la conversione pensavo a un progamma che avevo fatto in phython: in buona sostanza era una proporzione per esempio

40/680=x/180 dove: 40: coordinata opencv in pixel 680: risoluzione massima orizzontale x: gradi servo 180: ampiezza massima servo

giusto

Davvero impressionante direi, ottimo lavoro! Puoi spiegare come fa a riconoscere gli oggetti? Saluti