别人没那么重要,我也没那么重要,好好活着,把能做的小事做好,够不到的东西就放弃,承认就好。做一个心情好能睡着的人,你所有事情都会在正轨上。

PythonOpenCV-图形用户界面-响应鼠标事件

  OpenCV可在用户触发鼠标事件时,调用鼠标回调函数完成事件处理。

1. 鼠标回调函数

函数原型

def mouseCallback(event, x, y, flags, param): ...

参数说明

mouseCallback:自定义函数名称

event:调用时传递给函数的鼠标事件对象

x 和 y :触发鼠标事件时,鼠标指针在窗口中的坐标(x, y)

flags:触发鼠标事件时,鼠标拖动或键盘按键操作,参数可设置为下列常量:

  cv2.EVENT_LBUTTONDBLCLK:双击鼠标左键

  cv2.EVENT_LBUTTONDOWN:按下鼠标左键

  cv2.EVENT_LBUTTONUP:释放鼠标左键

  cv2.EVENT_MBUTTONDBLCLK:双击鼠标中键

  cv2.EVENT_MBUTTONDOWN:按下鼠标中键

  cv2.EVENT_MBUTTONUP:释放鼠标中键

  cv2.EVENT_MOUSEHWHEEL:滚动鼠标中键(正负值表示向左或向右滚动)

  cv2.EVENT_MOUSEMOVE:鼠标移动

  cv2.EVENT_MOUSEWHEEL:滚动鼠标中键(正负值表示向前或向后滚动)

  cv2.EVENT_RBUTTONDBLCLK:双击鼠标右键

  cv2.EVENT_RBUTTONDOWN:按下鼠标右键

  cv2.EVENT_RBUTTONUP:释放鼠标右键

  cv2.EVENT_FLAG_ALTKEY:按下【Alt】键

  cv2.EVENT_FLAG_CTRLKEY:按下【Ctrl】键

  cv2.EVENT_FLAG_SHIFTKEY:按下【Shift】键

  cv2.EVENT_FLAG_LBUTTON:按住鼠标左键拖动

  cv2.EVENT_FLAG_MBUTTON:按住鼠标中建拖动

  cv2.EVENT_FLAG_RBUTTON:按住鼠标右键拖动

param:传递给回调函数的其他数据

2. 绑定鼠标回调函数

函数原型

cv2.setMouseCallback(wname, mouseCallback)

 参数说明

wname:图像窗口名称

mouseCallback:鼠标回调函数名称

3. 代码示例

import cv2 as cv
import numpy as np

img = np.zeros((200, 320, 3), np.uint8)+255   # 创建白色背景图
# 定义鼠标回调函数
def draw(event, x, y, flag, param):
    if event == cv.EVENT_LBUTTONDBLCLK:
        cv.circle(img, (x, y), 15, (255, 0, 0), -1)   # 双击鼠标左键,画填充圆
    elif event == cv.EVENT_RBUTTONDBLCLK:
        cv.rectangle(img, (x, y), (x + 20, y + 20), (0, 0, 255), -1)  # 双击鼠标右键画填充矩形

cv.namedWindow('Drawing')
cv.setMouseCallback('Drawing', draw)
while True:
    cv.imshow("Drawing", img)
    key = cv.waitKey(1)
    if key == 27:    # 按下【Esc】键退出
        break
cv.destroyAllWindows()

运行结果

 

 

/*-------------------------------------------------------------------------------------------------------

笔者说明:

  该笔记来源于本人学习Python + OpenCv时的资料,

  分享出来只是为了供大家学习,并且为了自己以后想要用的时候方便寻找。

时间:2023年4月15日

------------------------------------------------------------------------------------------------------------*/

posted @ 2023-04-15 18:17  一路狂奔的乌龟  阅读(300)  评论(2)    收藏  举报
返回顶部