目录
步骤
定义数据
新建一个窗口黑色画布
显示黑色画布
添加鼠标回调函数
循环
一直显示图片
一直判断有没有按下字母 m
关闭所有窗口
鼠标回调函数
步骤
当鼠标按下记录坐标并记录鼠标标记位为true,移动的时候就会不断的画矩形或者圆,松下的时候就再画一个然后并记录鼠标标记位为flase
定义数据
# 如果按下鼠标,则为 true
drawing = False
# 如果为 True,则绘制矩形。按“m”切换到曲线
mode = True
# 记录前面鼠标按下的坐标
ix = -1
iy = -1
新建一个窗口黑色画布
img = np.zeros((512, 512, 3), np.uint8)
显示黑色画布
cv.namedWindow('image')
添加鼠标回调函数
cv.setMouseCallback('image', draw_circle)
循环
while 1:
一直显示图片
cv.imshow('image', img)
一直判断有没有按下字母 m
k = cv.waitKey(1) & 0xFFif k == ord('m'):mode = not modeelif k == 27:break
关闭所有窗口
cv.destroyAllWindows()
鼠标回调函数
def draw_circle(event, x, y, flags, param):if flags:print("1")if param:print("1")global ix, iy, drawing, modeif event == cv.EVENT_LBUTTONDOWN:drawing = Trueix, iy = x, yelif event == cv.EVENT_MOUSEMOVE:if drawing:if mode:cv.rectangle(img, (ix, iy), (x, y), (0, 255, 0), -1)else:cv.circle(img, (x, y), 5, (0, 0, 255), -1)elif event == cv.EVENT_LBUTTONUP:drawing = Falseif mode:cv.rectangle(img, (ix, iy), (x, y), (0, 255, 0), -1)else:cv.circle(img, (x, y), 5, (0, 0, 255), -1)