Tag Archives: Qt

Qt Ubuntu

Ubuntu (Unity) si muove verso Qt

Dopo aver scelto Qt/QML come framework di supporto principale per il suo sistema operativo mobile (smartphone/tablet), sembra che anche la versione desktop si stia muovendo verso questa linea.
La prossima versione di Unity, la tanto odiata/amata interfaccia utente di Ubuntu Desktop,  denominata “Unity Next” sarà realizzata infatti con il nuovo framework Qt5.

Fonte: Phronix - Ubuntu Wiki

Screenshoot

Software

In questa pagina è raccolto tutto il codice realizzato per il controllo del robot e dei sui dispositivi, commentato nelle altre sezioni del sito.
Può capitare che nonostante tutti i controlli e i test effettuati il codice proposto contenga dei bugs (chi riesce a programmare senza?). Se ne trovaste qualcuno o semplicemente volete segnalarmi dei miglioramenti che secondo voi possono essere apportati la mia casella email è sempre a vostra disposizione.

Oltre al codice utilizzato sul Rover è disponibile una raccolta di tutorial sulla Computer Vision e la programmazione in generale.

Microchip PIC

  • Ambiente di Sviluppo SW PIC. Un piccolo tutorial sull’installazione e la configurazione dell’ambiente di programmazione per PIC in linguaggio C. E’ illustrata anche la realizzazione di un piccolo progetto e il suo debug in simulazione [Vecchia versione del sito]
  • Controllo Servo R/C . Codice C per PIC 16f628, per il controllo di un Servo Motore da modellismo [Vecchia versione del sito]

Computer Vision

[Tutorial OpenCV Qt] OpenGL Widget per visualizzare immagini da OpenCV in una GUI con Qt (Seconda Parte)

Dopo aver creato il Widget Qt per visualizzare immagini OpenCV utilizzando OpenGL nella prima parte del tutorial, non resta che vedere come utilizzarlo.

La semplice applicazione che realizzeremo permette di visualizzare il flusso video proveniente da una webcam, è la base di partenza per ogni applicazione che utilizza OpenCV.

Questo tutorial prevede la conoscenza di base di Qt Creator e di Qt. Se qualche passaggio non vi risulta chiaro o sufficientemente spiegato non esitate a contattarmi via email.

Iniziamo aprendo l’applicazione QtCreator, Qt può essere utilizzato anche in altri ambienti di lavoro (Eclipse, Visual Studio, …), ma sinceramente preferisco utilizzare il suo ambiente originale in quanto è stato appositamente realizzato per sfruttare tutte le caratteristiche di Qt.

Creiamo un nuovo progetto “Qt Widget Project” -> “Qt GUI Application”.

Copiamo nella cartella del progetto i file creati nella prima parte del tutorial.

Aggiungiamo al progetto il file “cqtopencvviewergl.h” e “cqtopencvviewergl.cpp”.

Aggiungiamo alla GUI il Widget OpenCV-OpenGL:

  • apriamo il form
  • inseriamo un widget standard prendendolo dal menu “Containers”
  • chiamiamo il widget “openCVviewer”
  • clicchiamo con il tasto destro sul widget e selezioniamo “Promote to”
  • nella finestra che si apre selezioniamo “Add” e nella casella “Promoted Class Name” inseriamo “CQtOpenCVViewerGl”
  • Clicchiamo con il destro sulla GUI, selezioniamo Layout e quindi “Layout in a Grid” per espandere il widget su tutta l’area disponibile

La base dell’interfaccia è pronta. Ora dobbiamo configurare l’applicazione in modo che possa utilizzare OpenCV:

  • Apriamo il file “pro” e aggiungiamoINCLUDEPATH += your openCV path(for Linux: INCLUDEPATH += /usr/local/opencv2/)
  • aggiungiamo ancheLIBS     += -lopencv_core -lopencv_highgui

Ora che l’applicazione è predisposta all’utilizzo di OpenCV possiamo inserire il codice per la visualizzazione delle immagini dalla Webcam.

Apriamo ancora il form e inseriamo una voce “Start” al menu:

  • selezioniamo la barra di menu dove la label “Type here” e inseriamo la voce “Camera”
  • Selezioniamo la voce camera e nel sottomenu in “Type here” digitiamo “Start

Nel menu “Action Editor” clicchiamo con il tasto destro su “actionStart” e selezioniamo “Go to slot…”->”triggered()”.

QtCreator in questo modo crea automaticamente la funzione che verrà chiamata quando l’utente selezionerà “Camera”->”Start”.

La nostra funzione sarà molto semplice:

void QtGLWebcamDemo::on_actionStart_triggered()
{
    if( !mCapture.isOpened() )
        if( !mCapture.open( 0 ) )
            return;

    startTimer(50);
}

mCapture è una variabile privata della nostra GUI:

    cv::VideoCapture mCapture;

Ricordiamoci inoltre che per utilizzare VideoCapture è necessario includere il modulo “HighGUI” di OpenCV nella nostra applicazione:

#include

L’applicazione deve gestire il timer che abbiamo appena creato in modo che ogni 50 msec chieda alla webcam una nuova immagine e la invii al nostro widget opengl.

Aggiungiamo alla nostra classe principale la gestione dell’evento Timer:

protected:
     void timerEvent(QTimerEvent *event);

Che conterrà il seguente semplicissimo codice:

void QtGLWebcamDemo::timerEvent(QTimerEvent *event)
{
    cv::Mat image;
    mCapture >> image;

    // Do what you want with the image <img class="wp-smiley" alt=":-)" src="/web/20120417211944im_/http://www.robot-home.it/blog/wp-includes/images/smilies/icon_smile.gif" /> 

    // Show the image
    ui-&gt;openCVviewer-&gt;showImage( image );
}

Siamo arrivati alla fine. La semplice applicazione per visualizzare il flusso video da una webcam utilizzando Qt, OpenCV e OpenGL è pronta, non resta che compilare e provare.

Se volete scaricare i file del progetto demo realizzaro per questo tutorial, seguite questo link.

Buon divertimento :)

work in progress

Il primo tutorial è tornato online

Sono felice di annunciare che uno dei tutorial a cui tenevo di più non è andato perso, ma è tornato subito online.

La pagina “[Tutorial OpenCV Qt] OpenGL Widget per visualizzare immagini da OpenCV in una GUI con Qt” e di nuovo disponibile nella sezione Informatica.

Continuate a seguirmi

%d bloggers like this: