background image

 

69  

Βιβλιοθήκη  HighGUI  
 

Η  βιβλιοθήκη  HighGUI  (High  –  level  graphical  user  interface)  περιέχει  τις  

συναρτήσεις   της   OpenCV   που   επιτρέπουν   την   επικοινωνία   του   χρήστη   με   τον  

υπολογιστή   και   τις   περιφερειακές   συσκευές.   Στην   OpenCV   η   βιβλιοθήκη  
HighGUI  χωρίζεται  σε  τρεις  δομές.  Η  πρώτη  είναι  κυρίως  για  τις  συσκευές  και  
συγκεκριμένα  τις  κάμερες  και  την  αλληλεπίδραση  με  αυτές.  Η  δεύτερη  έχει  να  

κάνει  με  το  σύστημα  αρχείων  για  ανάκτηση  και  αποθήκευση  εικόνων.  Η  Τρίτη  
και   τελευταία   αφορά   το   σύστημα   παραθύρων   (window   system).   Η   δομή   αυτή  
περιέχει   τις   συναρτήσεις   για   άνοιγμα   παραθύρων   και   εγγραφή   δεδομένων   σε  

αυτά.  

 

Κατά   την   υλοποίηση   του   κώδικα   της   εφαρμογής   μας   χρησιμοποιήσαμε  

ευρέως   συναρτήσεις   και   από   τις   τρεις   δομές   της   βιβλιοθήκης   της   OpenCV  
HighGUI.   Παραθέτουμε   συνοπτικά   κάποιες   από   αυτές   τις   συναρτήσεις   και   τη  

χρήση  τους.  
 
Το   cvCapture   που   αναλύσαμε   πιο   πάνω   είναι   μία   από   τις   συναρτήσεις   της  

βιβλιοθήκης  HighGUI.  
 

Δημιουργούμε   παράθυρο   με   το   όνομα   image   και   με   το   όρισμα  
CV_WINDOW_AUTOSIZE   αλλάζει   το   μέγεθος   του   παραθύρου   για   να   χωράει   η  
εικόνα.  Το  όρισμα  c_str(  )  μετατρέπει  ένα  string  σε  char.  

 

cvNamedWindow(image.c_str(  ),CV_WINDOW_AUTOSIZE);  

 
Όταν   τελειώσουμε   την   ανίχνευση   αντικειμένων   καταστρέφουμε   το   παράθυρο  
που  ανοίξαμε,  με  τη  συνάρτηση:  

 

cvDestroyWindow(image,c_str(  )  );    

 

Για   να   φορτώσουμε   την   εικόνα   από   το   βίντεο   στο   παράθυρο   που  
δημιουργήσαμε    χρησιμοποιούμε  τη  συνάρτηση:  

 
 

cvShowImage(imagename.c_str(  ),  image);  

 

Το   πρώτο   όρισμα   καθορίζει   ποια   εικόνα   θα   βάλουμε   στο   παράθυρο   και   το  
δεύτερο  στο  δεύτερο  όρισμα  βάζουμε  το  όνομα  του  παραθύρου  που  θέλουμε  να  

μπει  η  εικόνα.  
 
Όταν   σταματήσουμε   να   χρειαζόμαστε   την   εικόνα   χρησιμοποιούμε   τη  

συνάρτηση:  
 

cvReleaseImage(&img);  

 
Με   τον   τρόπο   αυτό   ελευθερώνουμε   τη   μνήμη   που   έχει   εκχωρηθεί.   Μέσα   στη  

συνάρτηση   πρέπει   να   βάλουμε   ως   όρισμα   ένα   δείκτη   στο   IplImage   έτσι   ώστε  
μετά  την  κλήση  της  ο  δείκτης  αυτός  θα  πάρει  την  τιμή  NULL.