OpenCV hilft uns, verschiedene Arten von Mausereignissen zu steuern und zu verwalten, und gibt uns die Flexibilität, sie zu bedienen. Es gibt viele Arten von Mausereignissen. Diese Ereignisse können durch Ausführen des folgenden Codesegments angezeigt werden:

cv2 importieren
[print (i) für i in dir (cv2) wenn 'EVENT' in i]

Ausgabe :

EVENT_FLAG_ALTKEY
EVENT_FLAG_CTRLKEY
EVENT_FLAG_LBUTTON
EVENT_FLAG_MBUTTON
EVENT_FLAG_RBUTTON
EVENT_FLAG_SHIFTKEY
EVENT_LBUTTONDBLCLK
EVENT_LBUTTONDOWN
EVENT_LBUTTONUP
EVENT_MBUTTONDBLCLK
EVENT_MBUTTONDOWN
EVENT_MBUTTONUP
EVENT_MOUSEHWHEEL
EVENT_MOUSEMOVE
EVENT_MOUSEWHEEL
EVENT_RBUTTONDBLCLK
EVENT_RBUTTONDOWN
EVENT_RBUTTONUP

Lassen Sie uns nun sehen, wie die Koordinaten der auf das Bild geklickten Punkte angezeigt werden. Wir zeigen sowohl die Punkte an, auf die mit der rechten Maustaste geklickt wird, als auch mit der linken Maustaste.

Algorithmus:

  1. Importieren Sie das cv2 Modul.
  2. Importieren Sie das Bild mit der cv2.imread()Funktion.
  3. cv2.imshow()Zeigen Sie das Bild mit der Funktion an.
  4. Rufen Sie die cv2.setMouseCallback()Funktion auf und übergeben Sie das Bildfenster und die benutzerdefinierte Funktion als Parameter.
  5. Suchen Sie in der benutzerdefinierten Funktion mit dem cv2.EVENT_LBUTTONDOWNAttribut nach Linksklicks.
  6. Zeigen Sie die Koordinaten auf der Shell an.
  7. Zeigen Sie die Koordinaten im erstellten Fenster an.
  8. Machen Sie dasselbe für Rechtsklick-Klicks mit dem cv2.EVENT_RBUTTONDOWNAttribut. Ändern Sie die Farbe, während Sie die Koordinaten im Bild anzeigen, um sie von Linksklicks zu unterscheiden.
  9. Verwenden Sie außerhalb der benutzerdefinierten Funktion cv2.waitKey(0)die cv2.destroyAllWindows()Funktionen und, um das Fenster zu schließen und das Programm zu beenden.

Wir werden die farbige Version des Lena-Bildes verwenden .



import cv2 
   
def click_event(event, x, y, flags, params): 
  
    
    if event == cv2.EVENT_LBUTTONDOWN: 
  
        
        
        print(x, ' ', y) 
  
        
        
        font = cv2.FONT_HERSHEY_SIMPLEX 
        cv2.putText(img, str(x) + ',' +
                    str(y), (x,y), font, 
                    1, (255, 0, 0), 2) 
        cv2.imshow('image', img) 
  
    
    if event==cv2.EVENT_RBUTTONDOWN: 
  
        
        
        print(x, ' ', y) 
  
        
        
        font = cv2.FONT_HERSHEY_SIMPLEX 
        b = img[y, x, 0] 
        g = img[y, x, 1] 
        r = img[y, x, 2] 
        cv2.putText(img, str(b) + ',' +
                    str(g) + ',' + str(r), 
                    (x,y), font, 1, 
                    (255, 255, 0), 2) 
        cv2.imshow('image', img) 
  
if __name__=="__main__": 
  
    
    img = cv2.imread('lena.jpg', 1) 
  
    
    cv2.imshow('image', img) 
  
    
    
    cv2.setMouseCallback('image', click_event) 
  
    
    cv2.waitKey(0) 
  
    
    cv2.destroyAllWindows() 

Ausgabe :