函数定义

def mouse_callback(event,x,y,flags,userdata):
print(event,x,y,flags,userdata)

  • 函数名可以随便取,但是参数必须是5个
  • event表示鼠标事件,x,y是鼠标的坐标
  • flags鼠标的组合按键
  • userdata表示用户的数据
  • image.png
  • image.png

cv2.setMouseCallback(窗口,函数,用户信息)

  • 函数为上面定义的函数 ,注意不加括号,否则会报缺少参数的错误
  • 用户信息为字符串,eg “123”
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    """
    @Project :Opencv学习
    @File :控制鼠标.py
    @IDE :PyCharm
    @Author :咋
    @Date :2023/1/11 18:05
    """
    import cv2
    def mouse_callback(event,x,y,flags,userdata):
    print(event,x,y,flags,userdata)
    if event == 3:
    cv2.destroyAllWindows() # 摧毁窗口之后,后面的循环又会创建新的窗口显示出来,所以会出现一闪的效果
    image = cv2.imread("image.jpg")
    image = cv2.resize(image,(620,480))
    while True:
    cv2.imshow("image",image)
    cv2.setMouseCallback("image",mouse_callback,"123")
    if cv2.waitKey(0) == ord("q"):
    break


    cv2.destroyAllWindows()