Tabla de contenido
Crear una función de devolución de llamada del mouse
Ejemplo: dibuje un círculo en la posición del doble clic
Crear una función de devolución de llamada del mouse
Esta función se ejecuta cuando ocurre un evento de mouse. Existe un formato específico para crear una función de devolución de llamada del mouse, que es el mismo en todas partes. Se diferencia solo en función.
Ver todos los eventos del mouse
import cv2 as cv
events = [i for i in dir(cv) if 'EVENT' in i]
print(events)
Todos los eventos son los siguientes
CV_EVENT_MOUSEMOVE =0, //鼠标移动
CV_EVENT_LBUTTONDOWN =1, //按下左键
CV_EVENT_RBUTTONDOWN =2, //按下右键
CV_EVENT_MBUTTONDOWN =3, //按下中键
CV_EVENT_LBUTTONUP =4, //放开左键
CV_EVENT_RBUTTONUP =5, //放开右键
CV_EVENT_MBUTTONUP =6, //放开中键
CV_EVENT_LBUTTONDBLCLK =7, //左键双击
CV_EVENT_RBUTTONDBLCLK =8, //右键双击
CV_EVENT_MBUTTONDBLCLK =9, //中键双击
CV_EVENT_MOUSEWHEEL =10, //滚轮滚动
CV_EVENT_MOUSEHWHEEL =11 //横向滚轮滚动(还好我鼠标是G502可以这么干)
CV_EVENT_FLAG_LBUTTON =1, //左键拖拽
CV_EVENT_FLAG_RBUTTON =2, //右键拖拽
CV_EVENT_FLAG_MBUTTON =4, //中键拖拽
CV_EVENT_FLAG_CTRLKEY =8, //按住CTRL拖拽
CV_EVENT_FLAG_SHIFTKEY =16, //按住Shift拖拽
CV_EVENT_FLAG_ALTKEY =32 //按住ALT拖拽
Aprenda el uso de cv.setMouseCallback ( windowName, onMouse, param = None )
Esta función siempre se ejecuta en el programa, cada vez que se mueve el mouse , esta función se llama
Ejemplo: dibuje un círculo en la posición del doble clic
import cv2 as cv
import numpy as np
def draw_circle(event,x,y,flags,param): ##定义回调函数
if event == cv.EVENT_LBUTTONDBLCLK: ##左键双击
cv.circle(img,(x,y),100,(255,0,0),-1)
if __name__ == '__main__':
img = np.zeros((512,512,3),np.uint8) ##创建一个黑色图像
cv.namedWindow("image") # 创建图像与窗口并将窗口与回调函数绑定
cv.setMouseCallback("image",draw_circle)
while(1):
cv.imshow("image",img)
if cv.waitKey(20) & 0xFF==27: ##27是Esc的ASCII码
break
cv.destroyAllWindows()