• opencv控制鼠标事件


    1.基础知识和API

     

    OpenCV允许我们对窗口上的鼠标动作做出响应.回调函数,就是执行以后会执行这个函数

    • cv2.setMouseCallback(winname, callback, userdata) 写一个,主要写回调就行了

    winname是窗口的名字, callback是回调函数, userdata是给回调函数的参数.

    def mouse_callback(event, x, y, flags, userdata)格式固定

    • callback(event, x, y, flags, userdata)回调函数必须包含这5个参数. 函数名要和上面一样即可

    event是事件(鼠标移动, 左键, 右键等), x,y是点鼠标的坐标点, flags主要用于组合键, userdata就是上面的setMouseCallback的userdata,传参用的

    鼠标事件event:

    • EVENT_MOUSEMOVE 0 鼠标移动
    • EVENT_LBUTTONDOWN 1 按下鼠标左键
    • EVENT_RBUTTONDOWN 2 按下鼠标右键
    • EVENT_MBUTTONDOWN 3 按下鼠标中键
    • EVENT_LBUTTONUP 4 左键释放
    • EVENT_RBUTTONUP 5 右键释放
    • EVENT_MBUTTONUP 6 中键释放
    • EVENT_LBUTTONDBLCLK 7 左键双击
    • EVENT_RBUTTONDBLCLK 8 右键双击
    • EVENT_MBUTTONDBLCLK 9 中键双击
    • EVENT_MOUSEWHEEL 10 鼠标滚轮上下滚动
    • EVENT_MOUSEHWHEEL 11 鼠标左右滚动

    组合事件flags:

    • EVENT_FLAG_LBUTTON 1 按下左键
    • EVENT_FLAG_RBUTTON 2 按下右键
    • EVENT_FLAG_MBUTTON 4 按下中键
    • EVENT_FLAG_CRTLKEY 8 按下ctrl键
    • EVENT_FLAG_SHIFTKEY 16 按下shift键
    • EVENT_FLAG_ALTKEY 32 按下alt键

    2.实例代码

    1. import cv2
    2. import numpy as np
    3. def mouse_callback(event, x, y, flags, userdata):
    4. print(event, x, y, flags, userdata)
    5. cv2.namedWindow('mouse', cv2.WINDOW_NORMAL)
    6. cv2.resizeWindow('mouse', 640, 360)
    7. # 设置鼠标回调函数
    8. cv2.setMouseCallback('mouse', mouse_callback, '123')
    9. # 显示窗口和背景
    10. # 生成全黑的图片
    11. img = np.zeros((360, 640, 3), np.uint8)
    12. while True:
    13. cv2.imshow('mouse', img)
    14. key = cv2.waitKey(1)
    15. if key & 0xFF == ord('q'):
    16. break
    17. cv2.destroyAllWindows()
  • 相关阅读:
    Servlet(一):实现一个Servlet程序和使用Smart Tomcat部署Servlet程序
    【LeetCode刷题笔记】栈和队列
    Linux:Centos9 《下载-安装》
    LockSupport
    正式成为研究生一个月就可以改变一个人
    UE4 C++:UFUNCTION宏、函数说明符、元数据说明符
    vue3 props传值默认类型
    下载stm32f10x标准外设库
    报错 throw er; // Unhandled ‘error‘ event
    油管评论抓取软件,专为文科生、小白用户开发!
  • 原文地址:https://blog.csdn.net/weixin_46098612/article/details/127566799