Differenze tra le versioni di "Mostrare un'immagine in una finestra con le funzioni dell'API di OpenCV"
Riga 8: | Riga 8: | ||
Data la semplicità del codice necessario, verrà descritto di seguito un breve esempio: | Data la semplicità del codice necessario, verrà descritto di seguito un breve esempio: | ||
− | + | Library "libopencv_highgui:2.4.8" | |
− | |||
− | |||
− | |||
+ | Private Const CV_WINDOW_AUTOSIZE As Integer = 1 | ||
+ | Private Const CV_LOAD_IMAGE_COLOR As Integer = 1 | ||
− | + | <FONT color=gray>' ''int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE )'' | |
+ | ' ''Creates a window.''</font> | ||
+ | Private Extern cvNamedWindow(name As String, flags As Integer) As Integer | ||
− | <FONT color=gray>' '' | + | <FONT color=gray>' ''IplImage* cvLoadImage( const char* filename, int flags )'' |
− | + | ' ''Loads an image from a file.''</font> | |
− | + | Private Extern cvLoadImage(filename As String, flagLIC As Integer) As Pointer | |
− | |||
− | |||
− | <FONT color=gray>' ''void cvShowImage( const char* name, const CvArr* image )''</font> | + | <FONT color=gray>' ''void cvShowImage( const char* name, const CvArr* image )'' |
− | + | ' ''Displays an image in the specified window.''</font> | |
+ | Private Extern cvShowImage(name As String, imageP As Pointer) | ||
− | <FONT color=gray>' ''void cvMoveWindow(const char * name, Int x, Int y)''</font> | + | <FONT color=gray>' ''void cvMoveWindow(const char * name, Int x, Int y)'' |
− | + | ' ''Moves window to the specified position.''</font> | |
+ | Private Extern cvMoveWindow(name As String, xI As Integer, yI As Integer) | ||
− | <FONT color=gray>' ''void cvDestroyWindow( const char* name )''</font> | + | <FONT color=gray>' ''void cvDestroyWindow( const char* name )'' |
− | + | ' ''Destroys a window.''</font> | |
+ | Private Extern cvDestroyWindow(name As String) | ||
− | <FONT color=gray>' ''void cvDestroyAllWindows(void)''</font> | + | <FONT color=gray>' ''void cvDestroyAllWindows(void)'' |
− | + | ' ''Destroys all of the HighGUI windows.''</font> | |
+ | Private Extern cvDestroyAllWindows() | ||
− | + | ||
− | + | '''Public''' Sub Main() | |
− | '''Public''' Sub | ||
Dim imago As Pointer | Dim imago As Pointer | ||
− | + | <FONT color=gray>' ''Il valore "CV_WINDOW_AUTOSIZE" fa adattare automaticamente la dimensione della finestra alla dimensione dell'immagine caricata,'' | |
− | <FONT color=gray>' '' | + | ' ''e non consente quindi una successiva modifica manuale di tali dimensioni. Inoltre, viene impostato l'eventuale titolo della finestra.''</font> |
cvNamedWindow("Titolo della finestra", CV_WINDOW_AUTOSIZE) | cvNamedWindow("Titolo della finestra", CV_WINDOW_AUTOSIZE) | ||
− | <FONT color=gray>' ''Viene caricata l'immagine che dovrà essere mostrata nella finestra:''</font> | + | <FONT color=gray>' ''Viene caricata l'immagine che dovrà essere mostrata nella finestra:''</font> <SUP>[ [[#Note|Nota 1]] ]</sup> <SUP>[ [[#Note|Nota 2]] ]</sup> |
− | imago = cvLoadImage("''/percorso/della/immagine/da/mostrare''", CV_LOAD_IMAGE_COLOR) | + | imago = cvLoadImage("<FONT color=gray>''/percorso/della/immagine/da/mostrare''</font>", CV_LOAD_IMAGE_COLOR) |
− | <FONT color=gray>' ''Viene mostrata l'immagine nella finestra.''</font> | + | <FONT color=gray>' ''Viene mostrata l'immagine nella finestra.''</font> <SUP>[ [[#Note|Nota 3]] ]</sup> |
− | cvShowImage("Titolo della | + | cvShowImage("Titolo della finestra", imago) |
'''End''' | '''End''' | ||
Riga 72: | Riga 74: | ||
<FONT color=gray>' ''La seguente funzione sposta la finestra, individuata sulla base del suo titolo, alle coordinate X e Y in essa specificate:''</font> | <FONT color=gray>' ''La seguente funzione sposta la finestra, individuata sulla base del suo titolo, alle coordinate X e Y in essa specificate:''</font> | ||
− | cvMoveWindow("Titolo | + | cvMoveWindow("Titolo per un'altra finestra", 200, 400) |
'''End | '''End |
Versione delle 16:28, 9 ott 2016
OpenCV (Open Source Computer Vision Library) in via generale è una libreria di funzioni open source specifica per la vision computer e realizzata per fornire una infrastruttura comune per applicazioni di ottica artificiale.
Di seguito un possibile codice per far mostrare in modo molto semplice un'immagine all'interno di una finestra, autonoma rispetto ad altre eventuali generate dall'applicativo Gambas.
Si utilizzerà innanzitutto la libreria nella sua attuale versione: libopencv_highgui.so.2.4.8.
Data la semplicità del codice necessario, verrà descritto di seguito un breve esempio:
Library "libopencv_highgui:2.4.8" Private Const CV_WINDOW_AUTOSIZE As Integer = 1 Private Const CV_LOAD_IMAGE_COLOR As Integer = 1 ' int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE ) ' Creates a window. Private Extern cvNamedWindow(name As String, flags As Integer) As Integer ' IplImage* cvLoadImage( const char* filename, int flags ) ' Loads an image from a file. Private Extern cvLoadImage(filename As String, flagLIC As Integer) As Pointer ' void cvShowImage( const char* name, const CvArr* image ) ' Displays an image in the specified window. Private Extern cvShowImage(name As String, imageP As Pointer) ' void cvMoveWindow(const char * name, Int x, Int y) ' Moves window to the specified position. Private Extern cvMoveWindow(name As String, xI As Integer, yI As Integer) ' void cvDestroyWindow( const char* name ) ' Destroys a window. Private Extern cvDestroyWindow(name As String) ' void cvDestroyAllWindows(void) ' Destroys all of the HighGUI windows. Private Extern cvDestroyAllWindows() Public Sub Main() Dim imago As Pointer ' Il valore "CV_WINDOW_AUTOSIZE" fa adattare automaticamente la dimensione della finestra alla dimensione dell'immagine caricata, ' e non consente quindi una successiva modifica manuale di tali dimensioni. Inoltre, viene impostato l'eventuale titolo della finestra. cvNamedWindow("Titolo della finestra", CV_WINDOW_AUTOSIZE) ' Viene caricata l'immagine che dovrà essere mostrata nella finestra: [ Nota 1 ] [ Nota 2 ] imago = cvLoadImage("/percorso/della/immagine/da/mostrare", CV_LOAD_IMAGE_COLOR) ' Viene mostrata l'immagine nella finestra. [ Nota 3 ] cvShowImage("Titolo della finestra", imago) End Public Sub Button2_Click() ' Viene distrutta la finestra individuata sulla base del suo titolo: cvDestroyWindow("Titolo della Finestra") End Public Sub Button3_Click() ' La seguente funzione distrugge tutte le finestre create con l'API di "OpenCV": cvDestroyAllWindows() End Public Sub Button4_Click() ' La seguente funzione sposta la finestra, individuata sulla base del suo titolo, alle coordinate X e Y in essa specificate: cvMoveWindow("Titolo per un'altra finestra", 200, 400) End
Note
[1] E' possibile caricare solo le immagini dei seguenti formati:
- Windows bitmaps - BMP, DIB;
- JPEG files - JPEG, JPG, JPE;
- Portable Network Graphics - PNG;
- Portable image format - PBM, PGM, PPM;
- Sun rasters - SR, RAS;
- TIFF files - TIFF, TIF.
[2] Il secondo parametro specifica la colorazione dell'immagine:
- se > 0 (CV_LOAD_IMAGE_COLOR), l'immagine sarà comunque caricata come immagine a colori a 3-canali;
- se = 0 (CV_LOAD_IMAGE_GRAYSCALE), l'immagine caricata sarà mostrata in scala di grigio;
- se < 0 (CV_LOAD_IMAGE_UNCHANGED), l'immagine sarà caricata e mostrata così com'è.
[3] Se il 1° argomento della funzione "cvShowImage" ha un testo diverso da quello impostato nella funzione "cvNamedWindow", allora sarà creata un'ulteriore finestra e l'immagine verrà caricata in questa ulteriore finestra.