|
|
Riga 1: |
Riga 1: |
− | '''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.
| + | <FONT Color=red><B>Con le nuove versioni di OpenCV non è più possibile utilizzare in Gambas alcune funzioni esterne utili per mostrare un'immagine in una finestra</b></font> |
− | | |
− | E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "''libopencv_highgui.so.4.2.0''"
| |
− | | |
− | | |
− | Data la semplicità del codice necessario, verrà descritto di seguito un breve esempio:
| |
− | Library "libopencv_highgui:4.2.0"
| |
− |
| |
− | Public Struct IplImage <FONT Color=gray>' ''indice:''</font>
| |
− | nSize As Integer <FONT Color=gray>' '' 0''</font>
| |
− | ID As Integer <FONT Color=gray>' '' 4''</font>
| |
− | nChannels As Integer <FONT Color=gray>' '' 8''</font>
| |
− | alphaChannel As Integer <FONT Color=gray>' '' 12''</font>
| |
− | depth As Integer <FONT Color=gray>' '' 16''</font>
| |
− | colorModel[4] As Byte <FONT Color=gray>' '' 20''</font>
| |
− | channelSeq[4] As Byte <FONT Color=gray>' '' 24''</font>
| |
− | dataOrder As Integer <FONT Color=gray>' '' 28''</font>
| |
− | origin As Integer <FONT Color=gray>' '' 32''</font>
| |
− | align As Integer <FONT Color=gray>' '' 36''</font>
| |
− | width As Integer <FONT Color=gray>' '' 40''</font>
| |
− | height As Integer <FONT Color=gray>' '' 44''</font>
| |
− | roi As Pointer <FONT Color=gray>' '' 48''</font>
| |
− | maskROI As Pointer <FONT Color=gray>' '' 56''</font>
| |
− | imageId As Pointer <FONT Color=gray>' '' 64''</font>
| |
− | tileInfo As Pointer <FONT Color=gray>' '' 72''</font>
| |
− | imageSize As Integer <FONT Color=gray>' '' 80''</font>
| |
− | imageData As Pointer <FONT Color=gray>' '' 88''</font>
| |
− | widthStep As Integer <FONT Color=gray>' '' 96''</font>
| |
− | BorderMode[4] As Integer <FONT Color=gray>' '' 100''</font>
| |
− | BorderConst[4] As Integer <FONT Color=gray>' '' 116''</font>
| |
− | imageDataOrigin As Pointer <FONT Color=gray>' '' 136''</font>
| |
− | End Struct
| |
− |
| |
− | Private Const CV_WINDOW_AUTOSIZE As Integer = 1
| |
− | Private Enum CV_LOAD_IMAGE_UNCHANGED = -1, CV_LOAD_IMAGE_GRAYSCALE = 0, CV_LOAD_IMAGE_COLOR,
| |
− | CV_LOAD_IMAGE_ANYDEPTH, CV_LOAD_IMAGE_ANYCOLOR = 4, CV_LOAD_IMAGE_IGNORE_ORIENTATION = 128
| |
− |
| |
− | <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>' ''IplImage* cvLoadImage( const char* filename, int flags )''
| |
− | ' ''Loads an image from a file.''</font>
| |
− | Private Extern cvLoadImage(filename As String, flagLIC As Integer) As IplImage
| |
− |
| |
− | <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, cvimage As IplImage)
| |
− |
| |
− | <FONT color=gray>' ''int cvWaitKey(int delay=0)
| |
− | ' ''Waits for a pressed key.''</font>
| |
− | Private Extern cvWaitKey(delay As Integer) As Integer
| |
− |
| |
− | <FONT color=gray>' ''void cvReleaseImage(IplImage** image)''
| |
− | ' ''Deallocates the image header and the image data.''</font>
| |
− | Private Extern cvReleaseImage(image As Pointer)
| |
− |
| |
− | <FONT color=gray>' ''void cvDestroyWindow( const char* name )''
| |
− | ' ''Destroys a window.''</font>
| |
− | Private Extern cvDestroyWindow(name As String)
| |
− |
| |
− | <FONT color=gray>' ''void cvDestroyAllWindows(void)''
| |
− | ' ''Destroys all of the HighGUI windows.''</font>
| |
− | Private Extern cvDestroyAllWindows()
| |
− |
| |
− |
| |
− | '''Public''' Sub Main()
| |
− |
| |
− | Dim imago As IplImage
| |
− |
| |
− | <FONT color=gray>' ''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.''</font>
| |
− | cvNamedWindow("Titolo della finestra", CV_WINDOW_AUTOSIZE)
| |
− |
| |
− | <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("<FONT color=gray>''/percorso/della/immagine/da/mostrare''</font>", CV_LOAD_IMAGE_COLOR)
| |
− |
| |
− | <FONT color=gray>' ''Viene mostrata l'immagine nella finestra.''</font> <SUP>[ [[#Note|Nota 3]] ]</sup>
| |
− | cvShowImage("Titolo della finestra", imago)
| |
− |
| |
− | <FONT color=gray>' ''Consente l'apertura della finestra, e resta in attesa della pressione di un tasto della tastiera:''</font>
| |
− | cvWaitKey(0)
| |
− |
| |
− |
| |
− | <FONT color=gray>' ''Libera la memoria occupata per l'immagine:''</font>
| |
− | cvReleaseImage(Object.Address(imago) + 24)
| |
− |
| |
− | <FONT color=gray>' ''Viene distrutta la finestra individuata sulla base del suo titolo:''</font>
| |
− | cvDestroyWindow("Titolo della Finestra")
| |
− |
| |
− | <FONT color=gray>' ''La seguente funzione distrugge <SPAN style="text-decoration:underline">tutte</span> le finestre create con l'API di "OpenCV":''</font>
| |
− | cvDestroyAllWindows()
| |
− |
| |
− | '''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 <SPAN style="text-decoration:underline">diverso</span> da quello impostato nella funzione "cvNamedWindow", allora sarà creata un'ulteriore finestra e l'immagine verrà caricata in questa ulteriore finestra.
| |
− | | |
− | | |
− | | |
− | | |
− | =Riferimenti=
| |
− | * http://docs.opencv.org/index.html
| |