opencv 控制鼠标键盘实现功能setMouseCallback

[复制链接]
发表于 2026-2-7 16:11:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
鼠标变乱范例 OpenCV 支持多种鼠标变乱范例,常见的包罗:
cv2.EVENT_LBUTTONDOWN:左键按下
cv2.EVENT_RBUTTONDOWN:右键按下
cv2.EVENT_MBUTTONDOWN:中键按下
cv2.EVENT_LBUTTONUP:左键开释
cv2.EVENT_RBUTTONUP:右键开释
cv2.EVENT_MBUTTONUP:中键开释
cv2.EVENT_MOUSEMOVE:鼠标移动
cv2.EVENT_LBUTTONDBLCLK:左键双击
cv2.EVENT_RBUTTONDBLCLK:右键双击
cv2.EVENT_MBUTTONDBLCLK:中键双击
代码

实现点击鼠标左键不放移动可以绘图,点击c键盘去掉规复
  1. import cv2
  2. import numpy as np
  3. # 定义全局变量
  4. drawing = False
  5. ix, iy = -1, -1
  6. # 定义鼠标回调函数
  7. def mouse_callback(event, x, y, flags, param):
  8.     global drawing, ix, iy
  9.     if event == cv2.EVENT_LBUTTONDOWN:
  10.         drawing = True
  11.         ix, iy = x, y
  12.     elif event == cv2.EVENT_MOUSEMOVE:
  13.         if drawing:
  14.             cv2.line(img, (ix, iy), (x, y), (0, 123, 255), 2)  # 使用 BGR 颜色格式,红色为 (0, 0, 255)
  15.             ix, iy = x, y
  16.     elif event == cv2.EVENT_LBUTTONUP:
  17.         drawing = False
  18.         cv2.line(img, (ix, iy), (x, y), (0, 133, 255), 2)  # 使用 BGR 颜色格式,红色为 (0, 0, 255)
  19. # 创建一个纯白底图
  20. img = np.ones((512, 512, 3), np.uint8) * 255  # 创建一个纯白图像
  21. # 创建一个窗口
  22. cv2.namedWindow('Image')
  23. # 设置鼠标回调函数
  24. cv2.setMouseCallback('Image', mouse_callback)
  25. # 显示图像并等待用户交互
  26. while True:
  27.     cv2.imshow('Image', img)
  28.     key = cv2.waitKey(1) & 0xFF
  29.     if key == 27:  # 按下 ESC 键退出
  30.         break
  31.     elif key == ord('c'):  # 'c'键清除画布
  32.         img = np.ones((480, 640, 3), dtype=np.uint8) * 255
  33. # 保存图像
  34. cv2.imwrite('output_image.jpg', img)
  35. cv2.destroyAllWindows()
复制代码

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表