导入包
import cv2
import numpy as np
可以通过下面的代码来查看所有的鼠标事件函数
events=[i for i in dir(cv2) if 'EVENT' in i]#查看所有鼠标事件
print(events)
输出为:
['EVENT_FLAG_ALTKEY', flags 代表拖拽事件。按住alt键不放
'EVENT_FLAG_CTRLKEY',按住ctrl键不放
'EVENT_FLAG_LBUTTON',按住左键拖拽
'EVENT_FLAG_MBUTTON',中键拖拽
'EVENT_FLAG_RBUTTON',右键拖拽
'EVENT_FLAG_SHIFTKEY',按住shift不放
'EVENT_LBUTTONDBLCLK', event鼠标事件。左键双击
'EVENT_LBUTTONDOWN',按下左键
'EVENT_LBUTTONUP',释放左键
'EVENT_MBUTTONDBLCLK',
'EVENT_MBUTTONDOWN',
'EVENT_MBUTTONUP',
'EVENT_MOUSEHWHEEL',
'EVENT_MOUSEMOVE',
'EVENT_MOUSEWHEEL',
'EVENT_RBUTTONDBLCLK',
'EVENT_RBUTTONDOWN',
'EVENT_RBUTTONUP']
创建回调函数。当双击鼠标左键时,自动出现圆
def draw_circle(event,x,y,flags,param):#创建回调函数,参数分别是:event鼠标事件,flags鼠标拖拽事件,x,y中心坐标
if event==cv2.EVENT_LBUTTONDBLCLK:#双击鼠标左键
cv2.circle(img,(x,y),100,(255,0,0),-1)
img=np.zeros((512,512,3),np.uint8)#黑色画布,长宽都为512,3表示BGR3种颜色,uint8是用0-255表示所有颜色
cv2.namedWindow('image')#窗口命名
cv2.setMouseCallback('image',draw_circle)#用鼠标画
while(1):
cv2.imshow('image',img)
if cv2.waitKey(20)&0xFF==27:#。cv2.waitKey(delay)返回值:
# 1、等待期间有按键:返回按键的ASCII码(比如:Esc的ASCII码为27);
# 2、等待期间没有按键:返回 -1;
break
cv2.destroyAllWindows()
拖动鼠标来画矩形或者圆
drawing=False
mode=True
ix,iy=