Per abilitare il login in automatico di un utente con GDM3 si editi il file
/etc/gdm3/daemon.conf
modificando le seguenti righe
-----------------------------------------
# GDM configuration storage
#
# See /usr/share/gdm/gdm.schemas for a list of available options.
[daemon]
# Enabling automatic login
AutomaticLoginEnable = true
AutomaticLogin = luca
------------------------------------------
e riavviando con
dpkg-reconfigure gdm3
domenica 25 agosto 2013
OpenCV in C++
Per tentare in futuro di usare il riconoscimento real-time degli oggetti ho convertito lo script in Python visto in questo post in questa versione in C++
si compila, come gia' indicato, mediante
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include <sstream>
#include <iomanip>
#include <stdlib.h>
using namespace cv;
using namespace std;
int msleep(unsigned long milisec)
{
struct timespec req={0};
time_t sec=(int)(milisec/1000);
milisec=milisec-(sec*1000);
req.tv_sec=sec;
req.tv_nsec=milisec*1000000L;
while(nanosleep(&req,&req)==-1)
continue;
return 1;
}
int main(int argc, char* argv[])
{
VideoCapture cap(0); // open the video camera no. 0
if (!cap.isOpened()) // if not success, exit program
{
cout << "Cannot open the video file" << endl;
return -1;
}
double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); //get the width of frames of the video
double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); //get the height of frames of the video
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(98); /
cout << "Frame size : " << dWidth << " x " << dHeight << endl;
namedWindow("MyVideo",CV_WINDOW_AUTOSIZE); //create a window called "MyVideo"
int i = 0;
while (1)
{
Mat frame;
i++;
bool bSuccess = cap.read(frame);
if (!bSuccess)
{
cout << "Cannot read a frame from video file" << endl;
break;
}
stringstream ss;
ss << std::setfill('0') << std::setw(5) << i;
bool bSuccess2 = imwrite("a_"+ss.str()+".jpg", frame, compression_params);
msleep(1000);
}
return 0;
}
si compila, come gia' indicato, mediante
g++ `pkg-config --cflags --libs opencv` opencv.cpp -o opencv
-------------------------------------------------------------#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include <sstream>
#include <iomanip>
#include <stdlib.h>
using namespace cv;
using namespace std;
int msleep(unsigned long milisec)
{
struct timespec req={0};
time_t sec=(int)(milisec/1000);
milisec=milisec-(sec*1000);
req.tv_sec=sec;
req.tv_nsec=milisec*1000000L;
while(nanosleep(&req,&req)==-1)
continue;
return 1;
}
int main(int argc, char* argv[])
{
VideoCapture cap(0); // open the video camera no. 0
if (!cap.isOpened()) // if not success, exit program
{
cout << "Cannot open the video file" << endl;
return -1;
}
double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); //get the width of frames of the video
double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); //get the height of frames of the video
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(98); /
cout << "Frame size : " << dWidth << " x " << dHeight << endl;
namedWindow("MyVideo",CV_WINDOW_AUTOSIZE); //create a window called "MyVideo"
int i = 0;
while (1)
{
Mat frame;
i++;
bool bSuccess = cap.read(frame);
if (!bSuccess)
{
cout << "Cannot read a frame from video file" << endl;
break;
}
stringstream ss;
ss << std::setfill('0') << std::setw(5) << i;
bool bSuccess2 = imwrite("a_"+ss.str()+".jpg", frame, compression_params);
msleep(1000);
}
return 0;
}
venerdì 23 agosto 2013
Raspberry + Webcam + Python + OpenCV = Camera Car
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
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
Raspberry + Webcam + Python + OpenCV = tramonto in TimeLapse
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)
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)
giovedì 22 agosto 2013
OpenCV2 con Eclipse in Ubuntu
Update
-------------------------------------
altrimenti in modo piu' semplice e senza installare Eclipse
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
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;
}
-------------------------------------
altrimenti in modo piu' semplice e senza installare Eclipse
g++ `pkg-config --cflags --libs opencv` opencv.cpp -o opencv
-------------------------------------
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;
}
mercoledì 21 agosto 2013
Pacchetti non aggiornati con apt-get
In alcuni casi facendo
apt-get update
apt-get upgrade
risulta che alcuni pacchetti siano rimasti non aggiornati.Si puo' risolvere con
apt-get dist-upgrade
da fare ovviamente con le dovute accortezze
apt-get update
apt-get upgrade
risulta che alcuni pacchetti siano rimasti non aggiornati.Si puo' risolvere con
apt-get dist-upgrade
da fare ovviamente con le dovute accortezze
Apici inversi in Bash
Riprendendo il precedente post si puo' sostituire l'apice inverso come segue
apt-get install linux-headers-`uname -r`
puo' essere scritto come
apt-get install linux-headers-$(uname -r)
apt-get install linux-headers-`uname -r`
puo' essere scritto come
apt-get install linux-headers-$(uname -r)
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...