Riprendendo l'idea precedente (e grazie alla batteria) e' possibile anche fare dei CameraCar
La webcam era posta diretta davanti al volante
in questo caso, data la velocita', avrei dovuto ridurre il tempo di ripresa tra due fotogrammi per rendere il tutto piu' fluido. Sarebbe carino aggiungere un modulo Bluetooth, un GPS bluetooth ed una antenna Wireless per crearsi un piccolo una Google Car
Per questo progettino da un giorno ho provato ad usare la Raspberry per catturare dei time lapse
La base hardware e' quella presente in foto ovvero una Raspberry, una batteria esterna da 10000 mAh per essere autonomi dalle prese di corrente ed una comune webcam Logitech C310
La Raspberry e' configurata con un indirizzo statico ed un DHCP server e SSH Server per collegarsi con un portatile ed un cavo cross in modo da poter interagire in caso di necessita' mediante portatile
Per la configurazione software per prima cosa e' necessario installare OpenCV per Python mediante
apt-get install python-opencv
lo script e' il seguente (molto banale)
------------------------------------------ import cv import time nome = 0 capture = cv.CaptureFromCAM(0) while True: nome = nome + 1 frame = cv.QueryFrame(capture) indice = ("%04d")%nome cv.SaveImage("/home/luca/a_"+indice+".jpg",frame) time.sleep(20)
------------------------------------------
per mandare in esecuzione in automatico lo script e' stato modificato il file /etc/rc.local come segue aggiungendo python /home/luca/camera.py
una volta ottenute le immagini queste sono state montate in file mpg mediante il comando ffmpeg -f image2 -i a_%03d.jpg tramonto.mpg
(attenzione che gli indici di ffmpeg devono iniziare da 1. Le immagini sono denominati come a_001.jpg, a_002,jpg ed a seguire)
Per utilizzare la libreria OpenCV in C++ in ambiente Eclipse si deve prima di tutto aver installato Eclipse con il plugin CDT
Successivamente si puo' installare la libreria con il comando
apt-get install libopencv-dev
A questo punto si crea un nuovo progetto C++ dal wizard di Eclipse e si configurano i puntamenti alle directory di include e lib
nell'esempio sono riportate sono alcune librerie di base di OpenCV2. Se si usano funzioni avanzate sara' necessario aggiungere le corrispondenti librerie
a questo punto si puo' compilare un semplice esempio che mostra una immagine passata come argomento dalla linea di comando
------------------------------------------------- #include "opencv2/highgui/highgui.hpp" #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat im; if (argc == 2) im = imread(argv[1]); if (im.empty()) { cout << "Cannot open image!" << endl; return -1; } imshow("image", im); waitKey(0); return 0; }
Per installare l'emulatore del Commodore 64 e' necessario proecedere come segue
per prima cosa si installa il programma Vice mediante
apt-get install vice
Successivamente e' necessario acquisire le Rom che si possono scaricare da questo link
Si decomprime il file nella directory /usr/lib/vice (permessi di root necessari) e si avra' una sottodirectory per ogni calcolatore emulato. Ricontrollare a questo punto che i permessi siano impostati in modo tale che anche l'utente normale possa leggere i file
Circa 20 anni fa lo facevo sui Commodore 64 reali, registravo sul datasette e per salvare le schermate usavo un VHS....al giorno d'oggi, non avendo piu' l'hardware, non mi rimane che l'emulazione
Attenzione: in modalita' Warp il programma richiede oltre 30 minuti per terminare
---------------------------------------------- 10 hires 1,0 12 me = -2.0 14 mi = -1.2 20 de = 0.009375 30 di = 0.012 40 for i = 0 to 199 50 for j = 0 to 319 60 a = me + (j*de) 70 b = mi + (i*di) 80 x=0 90 y=0 100 for k = 1 to 100 110 xn = (x*x)-(y*y)+a 120 yn = (2*x*y)+b 130 t = (xn*xn)+(yn*yn) 135 cl = mod(k,2) 140 if (t>4) then plot j,i,cl 145 if (t>4) then k=101 150 x = xn 160 y = yn 170 next k 180 next j 190 next i 200 pause 5