HighGui : la libreria OpenCv per la visualizzazione di immagini e video (prima parte)

In questo articolo verranno descritte alcune funzioni definite nella libreria HighGui di OpenCV.
Questa libreria permette di visualizzare e salvare sia video che immagini.
Inoltre sono presenti funzioni molto comode per la gestione degli eventi da mouse e da tastiera.

Creazione di una finestra
La funzione che permette di creare una finestra è la seguente :

int cvNamedWindow(
const char* name,
int flags = CV_WINDOW_AUTOSIZE
);

Naturalmente name conterrà il nome della finestra che si intende creare. L’argomento flags invece avrà di default il valore CV_WINDOWS_AUTOSIZE per il ridimensionamento automatico della finestra in funzione dell’immagine che conterrà.

Ridimensionamento di una finestra

void cvResizeWindow(
const char* name,
int width,
int height
);

Oltre al parametro name presente già nella precedente funzione, troviamo il parametro relativo alla larghezza dell’immagine width e quello relativo all’altezza height.
Ricordiamo che sia width che height sono riferiti alla misura in pixel dell’immagine.

Caricamento di un’immagine
Per poter visualizzare un’immagine è necessario prima leggera dalla memoria di massa.
Il comando “magico” che troveremo spesso all’interno dei codici OpenCv è il seguente :

IplImage* cvLoadImage(
const char* filename,
int iscolor = CV_LOAD_IMAGE_COLOR
);

Questa funzione, che restituisce un puntatore a IplImage , ha come paramentri filename, riferito al nome del file dell’immagine compreso di estensione , e iscolor che specifica i colori dell’immagine.
Più precisamente può assumere i seguenti valori:
CV_LOAD_IMAGE_COLOR                1
carica l’immagine a tre canali di colore
CV_LOAD_IMAGE_GRAYSCALE      0
carica l’immagine a toni di grigio
CV_LOAD_IMAGE_UNCHANGED    -1
carica l’immagine senza alcun cambiamento

I formati supportati da tale funzione sono i seguenti :

Windows bitmap : BMP,DIB
Jpeg : JPEG,JPG,JPE
Portable Network Graphics : PNG
Portable image format : PBM,PGM,PPM
Sun rasters : SR,RAS
Tiff : TIFF,TIF

Visualizzazione di un’immagine
Dopo aver caricato un’immagine da file, è necessario utilizzare la funzione per la visualizzazione

void cvShowImage(
const char* name,
const CvArr* image
);

L’argomento name è riferito al nome della finestra che conterrà l’immagine,  mentre l’argomento image si riferisco all’immagine da visualizzare.

Ecco un piccolo esempio di visualizzazione :

#include <highgui.h>
#include <cv.h>
int main() {
// creiamo una finestra
cvNamedWindow(“bici”);
// carichiamo l’immagine da visualizzare passando il nome del file
Iplimage* img = cvLoadImage(“velocino.jpg”);
//  Visualizziamo l’immagine
cvShowImage (“bici”,img);
// ciclo while che “mantiene” la finestra fino alla pressione del tasto “esc”
while(1)   {
if (cvWaitKey(100) == 27 ) break;
}
// Chiudiamo la finestra e deallochiamo il puntatore relativo all’immagine
cvDestroyWindow(“bici”);
cvReleaseImage(&img);
return 0;
}

Il risultato sarà il seguente :

Se viene premuto il tasto esc, la finestra verrà chiusa.

Nella seconda parte dell’articolo, verrà descritto il procedimento per poter lavorare con i file video e i flussi provenienti da videocamere.



Questa voce è stata pubblicata in Visione Artificiale e contrassegnata con , , , . Contrassegna il permalink.

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>