Differenze tra le versioni di "Raspberry Webcam e Musica"
(Resoconto dell'esperimento del 7 Marzo scorso) |
m |
||
| (2 versioni intermedie di un altro utente non mostrate) | |||
| Riga 30: | Riga 30: | ||
tenuti assieme da uno script bash. | tenuti assieme da uno script bash. | ||
| − | + | ==== Gli script ==== | |
| − | #!/usr/bin/python | + | Il primo script scatta una foto via webcam e la decodifica tramite *zbarimg* |
| + | |||
| + | [[File:qrcapture.png | right | frame | border |Fotogramma pronto per la decodifica]] | ||
| + | #!/usr/bin/python | ||
import cv | import cv | ||
from os import system | from os import system | ||
| Riga 48: | Riga 51: | ||
# Passiamo l'immagine a zbarimg per decodificarlo | # Passiamo l'immagine a zbarimg per decodificarlo | ||
system("/usr/bin/zbarimg test.png") | system("/usr/bin/zbarimg test.png") | ||
| + | |||
Il secondo scritp, in bash, cerca il codice riconosciuto da capture | Il secondo scritp, in bash, cerca il codice riconosciuto da capture | ||
| Riga 76: | Riga 80: | ||
0031B| Galdson Roots |/Music/album/0031B.m3u | 0031B| Galdson Roots |/Music/album/0031B.m3u | ||
| + | === Conclusioni === | ||
| + | Siamo riusciti ad ottenere buona parte del risultato sperato. Per continuare sullo stesso progetto, un player audio da collegare | ||
| + | direttamente allo stereo o ad un amplificatore /casse / cuffia, Si potrebbe cercare di pilotare un touchscreen per poter dare all'utente | ||
| + | la possibilità, ad esempio, di saltare una traccia o variare il volume di riproduzione. | ||
| − | + | [[Category:Progetti]] | |
| − | |||
| − | |||
| − | |||
Versione attuale delle 14:29, 8 giu 2013
Raspberry Webcam e Musica
Resoconto sul Tavolo del 7 Febbraio 2013
Da terminare, integrare, illustrare con foto!
Il nostro esperimento mirava ad esplorare la possibilità di usare una webcam collegata ad un raspberry per riconoscere dei qrcode e distinguere tra diversi album virtuali da riprodurre su uno stereo.
Setup
Il nostro setup è stato particolarmente semplice:
- Un Raspberry B (v1);
- Una Webcam (Sony Playstation 3 Eye);
- Qualche card rappresentante gli album da suonare.
Ho scelto questo modello di webcam perché è considerata una delle migliori webcam per la computer vision amatoriale e si può trovare usata per poco più di 10€. Come se non bastasse il driver (libero) per linux è particolarmente performante.
Abbiamo usato Python per acquisire le immagini con *OpenCV* e *Python Imaging Library*
Avremmo voluto utilizzare zbar per
- zbar
Un bug del modulo python-zbar (python va in Segmentation Fault se importa il modulo) ci ha costretto a ripiegare sul programma standalone zbar-img e, in pieno stile unix, abbiamo optato per una serie di script specializzati tenuti assieme da uno script bash.
Gli script
Il primo script scatta una foto via webcam e la decodifica tramite *zbarimg*
#!/usr/bin/python
import cv
from os import system
# Creamo un oggetto associato alla prima e unica webcam
# attaccata al respberry (ovviamete l'indice e' 0)
camera = cv.CaptureFromCAM(0)
# Catturiamo un fotogramma
image = cv.QueryFrame(camera)
# Salviamo il fotogramma su file in una immagine png
cv.SaveImage("test.png",image)
# Passiamo l'immagine a zbarimg per decodificarlo
system("/usr/bin/zbarimg test.png")
Il secondo scritp, in bash, cerca il codice riconosciuto da capture
ed invia il comando al player (se il proprietario del Raspberry Pi
si ricorda di installarlo ;) )
#!/bin/bash
rm test.png
code=`capture.py | grep QR-Code | cut -d: -f2`
file=`grep "^$code" audiodb | cut -d\| -f2`
if [ -f "test.png" ]; then
if [ -n "$file" ]; then
echo -e "Avrei dovuto far suonare \n$file\n se mi fossi ricordato di installare il player"
else
echo "Non ho trovato $code nella banca dati"
fi
else
echo "qrcode non riconosciuto"
fi
La base dati da cui attingere per trovare quali file suonare è un semplice file divisi in campi indicizzato sul primo campo
0031A| Boom Boom Becket Attenti al ladro |Music/album/0031A.m3u 0001B| Fabrizio de André Creuza de ma |Music/album/0001B.m3u 0031B| Galdson Roots |/Music/album/0031B.m3u
Conclusioni
Siamo riusciti ad ottenere buona parte del risultato sperato. Per continuare sullo stesso progetto, un player audio da collegare direttamente allo stereo o ad un amplificatore /casse / cuffia, Si potrebbe cercare di pilotare un touchscreen per poter dare all'utente la possibilità, ad esempio, di saltare una traccia o variare il volume di riproduzione.
