学习opencv的setMouseCallBack()函数
import cv2 as cvimport numpy as np# 鼠标的回调函数def draw_circie(event, x, y, flags, param):if event == cv.EVENT_LBUTTONDBLCLK:cv.circle(img, (x, y), 100, (255, 0, 0), -1)# 创建一个黑色图像img = np.zeros((512, 512, 3), np.uint8)# 面板cv.namedWindow("xx")# 绑定鼠标cv.setMouseCallback("xx", draw_circie)while True:cv.imshow("xx", img)if cv.waitKey(25) == 27:breakcv.destroyWindow("images")
鼠标点击绘制
import numpy as npimport cv2 as cv# 鼠标回调函数def draw_circle(event, x, y, flags, param):global ix, iy, drawing, modeif event == cv.EVENT_LBUTTONDOWN:drawing = Trueix, iy = x, yelif event == cv.EVENT_MOUSEMOVE:if drawing == True:if mode == True: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 == True:cv.rectangle(img, (ix, iy), (x, y), (0, 255, 0), -1)else:cv.circle(img, (x, y), 5, (0, 0, 255), -1)drawing = False # 如果按下鼠标,则为真mode = True # 如果为真,绘制矩形。按 m 键可以切换到曲线ix, iy = -1, -1img = np.zeros((512, 512, 3), np.uint8)cv.namedWindow('image')cv.setMouseCallback('image', draw_circle)while True:cv.imshow("image", img)if cv.waitKey(25) == 27:breakcv.destroyAllWindows()
