一、鼠标画圆
import cv2
# 编写回调函数
def draw_circle(event,x,y,flags,param):
# 鼠标左键按下去,实心圆
if event == cv2.EVENT_LBUTTONDOWN:
cv2.circle(img,center=(x,y),radius=5,
color=(255,0,0),thickness=-1)
# 鼠标右键按下去,空心圆
elif event==cv2.EVENT_RBUTTONDOWN:
cv2.circle(img,center=(x,y),radius=5,
color=(0,255,0),thickness=1)
img = cv2.imread("11.png")
cv2.namedWindow(winname='drawing')
cv2.setMouseCallback('drawing',draw_circle)
while True:
cv2.imshow("drawing",img)
# 按q键退出
if cv2.waitKey(1) & 0xFF ==ord('q'):
break
cv2.destroyAllWindows()

二、鼠标画线
import cv2
drawing = False # 是否开始画图
start = (-1,-1)
# 鼠标的回调函数的参数格式是固定的,不要随易更改
def mouse_event(event,x,y,flags,param):
global start,drawing,mode
# 左键按下:开始画图
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
start =(x,y)
# 鼠标移动,画图
elif event == cv2.EVENT_MOUSEMOVE:
if drawing:
cv2.circle(img,(x,y),5,(0,0,255),-1)
# 左键释放:结束画图
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.circle(img,(x,y),5,(0,0,255),-1)
img = cv2.imread("13.jpg")
cv2.namedWindow(winname='drawing')
cv2.setMouseCallback('drawing',mouse_event)
while True:
cv2.imshow("drawing",img)
# 按q键结束
if cv2.waitKey(1) & 0xFF ==ord('q'):
break
cv2.destroyAllWindows()
