Raspberry Webcam e Musica
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.