Visualización de las coordenadas de los puntos en los que se hizo clic en la imagen usando Python-OpenCV

OpenCV nos ayuda a controlar y administrar diferentes tipos de eventos del mouse y nos brinda la flexibilidad para operarlos. Hay muchos tipos de eventos de ratón. Estos eventos se pueden mostrar ejecutando el siguiente segmento de código:

import cv2
[print(i) for i in dir(cv2) if 'EVENT' in i]

Producción : 

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

Ahora veamos cómo mostrar las coordenadas de los puntos en los que se hizo clic en la imagen. Mostraremos tanto los puntos en los que se hizo clic con el botón derecho como con el botón izquierdo.

Algoritmo: 

  1. Importe el módulo cv2.
  2. Importe la imagen usando la función cv2.imread().
  3. Muestre la imagen la imagen usando la función cv2.imshow().
  4. Llame a la función cv2.setMouseCallback() y pase la ventana de imagen y la función definida por el usuario como parámetros.
  5. En la función definida por el usuario, verifique los clics con el botón izquierdo del mouse usando el atributo cv2.EVENT_LBUTTONDOWN.
  6. Muestra las coordenadas en el Shell.
  7. Muestra las coordenadas en la ventana creada.
  8. Haga lo mismo con los clics del botón derecho del mouse usando el atributo cv2.EVENT_RBUTTONDOWN. Cambie el color mientras muestra las coordenadas en la imagen para distinguirlos de los clics izquierdos.
  9. Fuera de la función definida por el usuario, use las funciones cv2.waitKey(0) y cv2.destroyAllWindows() para cerrar la ventana y finalizar el programa.

Usaremos la versión coloreada de la imagen de Lena .  

Python3

# importing the module
import cv2
  
# function to display the coordinates of
# of the points clicked on the image
def click_event(event, x, y, flags, params):
 
    # checking for left mouse clicks
    if event == cv2.EVENT_LBUTTONDOWN:
 
        # displaying the coordinates
        # on the Shell
        print(x, ' ', y)
 
        # displaying the coordinates
        # on the image window
        font = cv2.FONT_HERSHEY_SIMPLEX
        cv2.putText(img, str(x) + ',' +
                    str(y), (x,y), font,
                    1, (255, 0, 0), 2)
        cv2.imshow('image', img)
 
    # checking for right mouse clicks    
    if event==cv2.EVENT_RBUTTONDOWN:
 
        # displaying the coordinates
        # on the Shell
        print(x, ' ', y)
 
        # displaying the coordinates
        # on the image window
        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)
 
# driver function
if __name__=="__main__":
 
    # reading the image
    img = cv2.imread('lena.jpg', 1)
 
    # displaying the image
    cv2.imshow('image', img)
 
    # setting mouse handler for the image
    # and calling the click_event() function
    cv2.setMouseCallback('image', click_event)
 
    # wait for a key to be pressed to exit
    cv2.waitKey(0)
 
    # close the window
    cv2.destroyAllWindows()

Producción :

Publicación traducida automáticamente

Artículo escrito por qwerty4858 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *