# data[].attributes.body
La función MouseCallback es básicamente la función que se llamará cuando se detecte un evento del mouse.

# data[].attributes.attachment_link.readable_text
import cv2
import numpy as np

def dibujando(event,x,y,flags,param):
    # Imprimimos la información sobre los eventos que se estén realizando
    print('-----------------------------')
    print('event=',event)
    print('x=',x)
    print('y=',y)
    print('flags=',flags)

    # Ejemplos de acciones con algunos eventos del mouse
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(imagen,(x,y),20,(255,255,255),2)

    if event == cv2.EVENT_RBUTTONDOWN:
        cv2.circle(imagen,(x,y),20,(0,0,255),2)

    if event == cv2.EVENT_LBUTTONDBLCLK:
        cv2.circle(imagen,(x,y),10,(255,0,0),-1)

    if event == cv2.EVENT_RBUTTONDBLCLK:
        cv2.circle(imagen,(x,y),10,(0,255,0),-1)

    if event == cv2.EVENT_LBUTTONUP:
        cv2.putText(imagen,'Ha dejado de presionar (Izquierdo)',(x,y),2,0.4,(255,255,0),1,cv2.LINE_AA)

    if event == cv2.EVENT_RBUTTONUP:
        cv2.putText(imagen,'Ha dejado de presionar (Derecho)',(x,y),2,0.4,(0,255,255),1,cv2.LINE_AA)

imagen = np.zeros((480,640,3),np.uint8)
cv2.namedWindow('Imagen')
cv2.setMouseCallback('Imagen',dibujando)

while True:
    cv2.imshow('Imagen',imagen)
    
    k = cv2.waitKey(1) & 0xFF
    if k == ord('l'): # Limpiar el contenido de la imagen
        imagen = np.zeros((480,640,3),np.uint8)
    elif k == 27:
        break

cv2.destroyAllWindows()

# data[].attributes.headline
Ahora que sabemos cómo manejar las entradas de la cámara web, el teclado y mouse, ahora veremos cómo convertir una imagen en una imagen similar a una caricatura. Podemos convertir una imagen en un boceto o una imagen de dibujos animados en color.

# data[].attributes.subject
Ahora que sabemos cómo manejar las entradas de la cámara web, el teclado y mouse, ahora veremos cómo convertir una imagen en una imagen similar a una caricatura. Podemos convertir una imagen en un boceto o una imagen de dibujos animados en color.

# data[].attributes.headline
OpenCV proporciona un objeto de captura de video que maneja todo relacionado con abrir y cerrar la cámara web. Todo lo que tenemos que hacer es crear este objeto y leer lo que capta la cámara mediante capturas.

# data[].attributes.subject
OpenCV proporciona un objeto de captura de video que maneja todo relacionado con abrir y cerrar la cámara web. Todo lo que tenemos que hacer es crear este objeto y leer lo que capta la cámara mediante capturas.

# data[].attributes.body
Ahora que sabemos cómo capturar una transmisión de video en vivo desde la cámara web, veamos cómo usar el teclado para interactuar con la ventana que muestra la transmisión de video:

# data[].attributes.attachment_link.readable_text
# Comprobar si la cámara web se abre correctamente
si no es cap.isOpened(): elevar
    IOError("No se puede abrir la cámara web")
    cur_mode = Ninguno
# mientras que es cierto:
# Lea el cuadro actual de la cámara web
ret, cuadro = cap.read()
# Cambiar el tamaño de la imagen capturada
marco = cv2.resize(marco, Ninguno, fx=0.5, fy=0.5,interpolación=cv2.INTER_AREA)
c = cv2.esperaClave(1)
si c == 27:
#descanso
# Actualice cur_mode solo en caso de que sea diferente y se presionó la tecla
# En caso de que no se haya presionado una tecla durante la iteración, el resultado es -1 o 255, dependiendo 
# en versiones de biblioteca
si c != -1 y c != 255 y c != cur_mode: 
    cur_mode = c
if cur_mode == ord('g'):
    salida = cv2.cvtColor(marco, cv2.COLOR_BGR2GRAY)
elif cur_mode == ord('y'):
    salida = cv2.cvtColor(marco, cv2.COLOR_BGR2YUV)
elif cur_mode == ord('h'): 
    cv2.cvtColor(marco, cv2.COLOR_BGR2HSV)
    salida = marco
    cv2.imshow('Cámara web', salida)
    cap.liberar()
cv2.destroyAllWindows()

# data[].attributes.headline
Interactuar con una transmisión de video en vivo

# data[].attributes.subject
Interactuar con una transmisión de video en vivo