Home
Repository 32bit  Forum
Repository 64bit  Wiki

Modifiche

Webcam Monitoring con la "Konica Webcam USB"

13 875 byte aggiunti, 14:06, 25 apr 2007
Esecuzione di '''motion'''
[[category:Multimediale]]
 
== Introduzione ==
Supporta connessioni ''TCP'' o su protocollo modem ''H323'' e possiede un comodo wizard per l'identificazione dell'hardware. Devo dire che questa è la parte che meno mi interessava; ero più orientato ad utilizzare la webcam per effettuare la cattura delle immagini.<br />
Ho provato con "'''Vjgrabbj'''", per il quale è disponibile un bellissimo ''How-To'' molto chiaro. Nel mio caso, però, non sono riuscito a compilarlo e ciò mi ha fatto orientare su di un altro software, ossia "'''Camstream'''". Per coloro che volessero comunque provare ''Vjgrabbj'', può trovare maggiori informazioni nel seguente link :<br />
[http://vgrabbj.gecius.de]<br />Il programma in questione, richiede i seguenti pacchetti :* Libjpeg* Libpng* Zlib* Ftplib (opzionale)* Freetype (opzionale)Per quanto riguarda invece la documentazione del progetto, potete guardare [http://www.sottosuolo.org/guide/html1/Linux_WebcamInternet.html qui]. === Camstream: installazione ed utilizzo === E' basato sulle librerie "''QT''" ma, se avete "''KDE''" installato come nel mio caso, dovreste già averr tutto ciò che serve.<br />Per coloro che non le avessero installate, sono comunque reperibili presso :<br /> [http://www.trolltech.com/ http://www.trolltech.com/]<br />Gli obiettivi del progetto, come annunciato anche sul sito, sono ambiziosi:* Webcamming: permette di salvare e fare upload di immagini ad intervalli regolari* Video conferencing* Webcam broadcast (including server): consente di fungere da webcam server* Registrazione di filmati (AVI, Quicktime) attraverso la webcam e loro riproduzione* Uso della webcam come videocamera di sorveglianzaPer ora si può utilizzare solo la prima funzionalità, che sembra essere comunque davvero ben supportata.<br />Il software si installa e si utilizza semplicemente : wget [http://www.smcc.demon.nl/camstream/download/camstream-0.26.3.tar.gz http://www.smcc.demon.nl/camstream/download/camstream-0.26.3.tar.gz] [''INVIO'']...dopodichè : #./configure #make && make installPrima di utilizzare il programma, è bene notare come sia stato associato a "Camstream" un altro programma: "''Caminfo''". Quest'ultimo è utile per l'analisi del device e del nostro hardware; praticamente, viene effettuata una sorta di "interrogazione" della telecamera. Nel nostro caso, avremo: #./caminfo [''INVIO'']...che ci mostrerà : CVideoDevice::ResetImagesRGB() CVideoDevice::ResetImagesYUV() CVideoDevice::ResetImagesRGB() CVideoDevice::ResetImagesYUV() CVideoDevice::ResetImagesRGB() CVideoDevice::ResetImagesYUV() Detected 1 Video4Linux devices. Device node :/dev/video0 Name of device :"Konica Webcam" Minimum size :160x120 Current size :0x0 Video inputs :1 Input 0 Name :"Camera" Type :Camera Audio :no Tuners :no Audio inputs :noPer eseguire il software, bisogna digitare dalla bash il comando :  #camstream [''INVIO'']A questo punto, dovrebbe aprirsi una finestra; dalla tab "''File''", scegliere "''OpenViewer''".<br />Se non si sono incontrati problemi, il device dovrebbe essere quello della nostra telecamera (identificato prima col comando "''lsusb''") in quanto l'unico del sistema: #lsusb [''INVIO'']...che mostra: Bus 002 Device 002: ID 04c8:0720 Konica Corp. Digital Color CameraFatto ciò, basterà impostare le dimensioni iniziali per l'immagine che verrà acquisita e cliccare su "''OK''". Potremo finalmente vedere ed acquisire in formato statico (''snapshot'') ciò che la webcam riprende.<br />Questo software consente di visualizzare le immagini ed effettuare il ''grabbing'' utilizzando la ''toolbar''. Inoltre, è possibile creare degli snapshot in vari formati ad inttervalli di tempo prestabiliti. E' possibile inoltre, avere in sovraimpressione il ''timestamp''.<br />Inoltre, prevede la creazione di immagini in sequenza o con il nome composto dalla data. In alternativa a ciò, si può optare per l'aggiornamento di un unico file, come nel caso dell'utilizzo di una webcam su Internet che, ad intervalli regolari di tempo, aggiorna l'immagine.<br />La configurazione è semplice :<br />* con il primo bottone a sinistra, possiamo modificare i controlli della webcam, come:** Dimensione (risoluzione)** Framerate** Saturazione** Contrasto** Luminosità** Gamma* Il secondo bottone, ci permette di programmare il comportamento della videocamera ed è il più importante:* Il terzo ci permette di visualizzare l'ultimo snapshot a fianco della ripresa in tempo reale* I 2 bottoni successivi, ci consentono di prelevare degli snapshot direttamente o ad intervalli di tempo prefissati (secondi e minuti)* L'ultimo dei bottoni, abilita o disabilita l'audio; per gestire quest'ultimo,''Camstream'', utilizza i driver "''ALSA''" .<br />In conclusione, posso dire di aver trovato questo programma davvero ben fatto; di semplice installazione ed utilizzo rispetto ad altri programmi, non ha richiesto nulla di particolare.<br />Ho provato ad impostare il salvataggio su di una directory esportata con "''Samba''", sia visualizzando le immagini dalla rete direttamente col previewer del file manager, sia utilizzando programmi in ambiente Microsoft Windows&copy; (con ''Moviemaker'') per effettuare montaggi di immagini in sequenza ed ottenere dei brevi filmati. == Motion: Installazione e configurazione == Un'alternativa, sicuramente più completa e professionale, è rappresentata da "''Motion''" che consente di archiviare le immagini solo nel caso in cui la telecamera percepisca dell'attività; in questo modo, possiamo risparmiare notevoli risorse e spazio disco.<br />''Motion'' utilizza il "''V4L''" (''Video 4 Linux'') per la cattura delle immagini.<br />Non è un programma nato per visualizzare su schermo le immagini in tempo reale, ma piuttosto per poterle acquisire, salvare e poterle elaborare in un secondo momento. === Installazione === Per poter procedere all'installzione, si ha bisogno dei seguenti pacchetti :* [http://heanet.dl.sourceforge.net/sourceforge/ffmpeg/ffmpeg-0.4.8.tar.gz "''ffmpeg''"]* [http://aleron.dl.sourceforge.net/sourceforge/mjpeg/mjpegtools-1.6.2.tar.gz "''mjpegtools]La sua installazione può essere fatta con il supporto di "''libavcodec''" che cio consentirà di creare filmati ''mpeg'' riepilogativi delle sequenza registrate.<br />Il programma può essere prelevato da :<br />[http://keihanna.dl.sourceforge.net/sourceforge/motion/motion-3.0.7-1.tar.gz http://keihanna.dl.sourceforge.net/sourceforge/motion/motion-3.0.7-1.tar.gz].<br />...ed installato con le seguenti opzioni : #./configure --with-libavcodec=/usr/src/ffmpeg-0.4.8/libavcodec && make && make install && ldconfig [''INVIO'']L'esecuzione richiede un po' di pazienza e di verifiche in modo da ottenere la configurazione necessaria visto che possiede molte opzioni. Il file da controllare è "''motion.conf''" che di default, viene salvato in "''/usr/local/etc/''".<br />Il programma, costruisce una struttura a directory molto pratica da consultare in cui le immagini salvate vengono divise per anno/mese/giorno/ora/minuto. In questo modo, sfruttando il preview del filemanager, potremmo visualizzare le immagini ottenute soltanto quando è stato registrato movimento nello spazio d'inquadratura della webcam. === Costruzione di filmati con ''motion'' === I filmati, si possono creare utilizzando l'"''mpeg_encoder''" oppure usando ''libavcodec''. Per chi volesse utilizzare ''mpeg_encoder'', lo può reperire da [ftp://mm-ftp.cs.berkeley.edu/pub/multimedia/mpeg/encode/mpeg_encode-1.5b-src.tar.gz qui].<br />Per installarlo, io ho fatto così : #mkdir /root/mpeg [''INVIO'']  #cd /root/mpeg [''INVIO'']  #tar -xvzf mpeg_encode-1.5b-src.tar.gz [''INVIO'']  #make && make install [''INVIO'']  #jpeg/configure [''INVIO'']  #make && make install [''INVIO'']Se invece si decidesse di utilizzare ''libavcodec'', basta configurare i parametri necessari nel file ''motion.conf''così :  '''ffmpeg_cap_news yes''' # ''specifica di utilizzare ffmpegs libavcodec per<br /> creare filmati mpeg in tempo reale  '''ffmpeg_timelaps on''' # ''specifica l'utilizzo di ffmpeg libavcodec per codificare timelaps movie  '''ffmpeg_bps 400000''' # ''Bitrate del filmato mpeg prodotto da ffmpeg''  '''jpg_cleanup no''' # ''se settato a "no" dopo aver creato il filmato, rimuove<br />le immagini "jpeg"A questo punto, si può eseguire ''motion'' e visualizzare i filmati creati. == Dettagli sulla configurazione (''motion.conf'') == Come detto, ''motion'', richiede almeno una configurazione minima anche se potrebbe andare bene, per gli utilizzi standard, il file "''motion.conf''" installato di default.<br />Se opportunamente modificato, questo programma, fa davvero molte cose; vediamo alcune delle opzioni : # Capture device options: videodevice /dev/video0''(Imposta il device di default per l'acquisizione delle immagini).'' framerate 100''(E' il numero massimo di frames che può salvare al secondo).'' width 320''(La larghezza di ogni singolo frame).'' height 240''(L'altezza di ogni singolo frame).'' #Motion detection settings: #Threshold for declaring motion (number of changed pixel in an image) - (Default 1500) threshols 500''(Con questo valore specifichiamo quanti pixel devono essere modificati perchè '''''motion''''' identifichi il movimento; abbassando questo valore, aumenteremo la sensibilità delle telecamere ed aumenteremo il numero di frames registrati).'' #noise_level sets the noise threshold for the motion detection (Default: 32) noise_level 16)''(Permette di impostare il livello di disturbo necessario alle webcam per registrare i movimenti).'' #This option enable '''''motion''''' to adjust its noise level for very dark frames #Default: no night_compensate yes''(Consente di imposter la "compensazione notturna" per il livello di disturbo).'' #Only capture one frame per second when no detecting motion #Default: no low_cpu yes''(Se impostato a "yes" riduce il lavoro del sistema e della cpu che salva un solo frame quando non viene rilevato alcun movimento).'' #Activate the light switch filter #Default: off lightswitch yes''(Consente di impostare un filtro che impedisce a '''''motion''''' di considerare movimenti le variazioni di luminosità percepite dalle webcam).'' #Warnings and logging: daemon no''(Abilita l'esecuzione in background "daemon mode").'' mail root@localhost''(Invia una notifica via mail ad ogni movimento registrato).'' execute command''(Esegue un comando ad ogni movimento rilevato).'' onsave onsavescript.sh''(Esegue un comando ad ogni creazione di immagine come, ad esempio, un suono).'' onmpeg echo''(Esegue un comando ad ogni filmato prodotto come, ad esempio, un suono).'' #Image output locate''(Se impostata a "yes" disegna un riquadro attorno alla parte di immagine modificata).'' snapshot 60''(Crea un'immagine di snapshot ogni tot secondi comunque anche in assenza di movimento).'' output_normal yes''(Crea le immagini salvate da '''''motion''''' relative ai singoli movimenti rilevati; è indispensabile attivarlo per avere le singole slide dei movimenti).'' output_motion yes''(Crea anche le immagini solo dell'oggetto in movimento - immagini a fondo verde con in bianco solo i pixel modificati).'' realmotion''(Questa opzione modifica il metodo di funzionamento della direttiva "'''output_motion'''"; normalmente mostra solo i pixel di cui sono stati identificati dei cambiamenti dell'ultima immagine relativamente all'ultimo frame, se invece si imposta a "'''real_motion on'''" le immagini conterranno tutti i pixel modificati nell'immagine).'' snapshot_overwrite no''(Sovrascrive lo stesso snapshot senza crearne uno nuovo).'' quality 100''(Imposta la qualità delle immagini salvate, "'''100'''" è il massimo).'' target_dir snapshot''(E' il path assoluto dove verranno salvate le immagini ed i filmati).'' ffmpeg_cap_new yes''(Consente a '''''motion''''' di utilizzare '''libavcodec''' per codificare filmati mpeg in tempo reale).'' ffmpeg_cap_motion on''(Usa '''ffmpeg''' per creare i filmati delle immagini di '''''motion''''').'' ffmpeg_timelaps on''(Usa '''ffmpeg''' per codificare il timelaps per i filmati).'' ffmpeg_bps 40000''(Bitrate per i filmati creati).'' max_mpeg_time 60 # 1 minuto''(Lunghezza massima in secondi dei filmati creati da '''mpeg''').'' jpg_cleanup no''(Elimina i ".jpg" in caso di creazione del filmato).'' #User defined text in image parameters drawtext_user Ufficio''(Aggiunge la scritta "''Ufficio''" su ogni snapshot).'' drawtext_changes on''(Segna il numero di pixel modificati).'' drawtext_shots on''(Imposta il "''timestamp''" per gli snapshot).''<br />Nel caso si volessero usare due telecamere, occorre impostare un file esterno per la seconda webcam chiamato ''thread2.conf''. Nel file "''motion.conf''" specificheremo la direttiva "''thread /usr/local/etc/thread2.conf''".<br />Questo file, dovrà contenere almeno le direttive : #/etc/thread2.conf #Videodevice to be used for capturing videodevice /dev/video1 #Target directory for pictures target_dir /home/paolo/webcam2 drawtext_user Camera_Porta === Esecuzione di '''motion''' ===Motion può essere eseguito normalmente da riga di comando lanciando semplicemente : #motion [''INVIO'']In questo modo, potremo effettuare il debug verificando il comportamento del programma. Nel caso in cui si voglia eseguirlo in modalità ''daemon mode'', occorre specificarlo nel file ''motion.conf'' con l'opzione ''daemon'' impostata su ''on''. In questo modo, dovremmo visualizzare le acquisizioni se occupiamo il campo visivo della webcam. #motion [''INVIO'']Visualizzeremo : thread0 device: /dev/video0 input: 1 waiting for threads to finish, pid: 6351 New threshold: 1500 1465 New threshold: 1500 11856 File of type video/mpeg saved to: /htdir/htdocs/webcam/2004/04/14/172711.mpg type: 15 15 File of type image/jpg saved to: /htdir/htdocs/webcam/2004/04/14/172711.jpg 4214 New threshold: 1500 6 New threshold: 1500 1051Ovviemente, molti dei parametri specificati nel file di configurazione "''motion.conf''", di default installato in ''/usr/local/etc'', possono essere specificati da linea di comando : #motion -h [''INVIO'']  motion Version 3.1.10, Copyright 2000 Jeroen Vreeken usage: motion [option] Overall settings: -C Output changes count for every frame, usable for tuning -D daemonize -a seconds time between two automated snapshots, default: 0
388
contributi