012-OpenCV调用鼠标 *** 作补充

012-OpenCV调用鼠标 *** 作补充,第1张

012-OpenCV调用鼠标 *** 作补充

学得不好,想到哪,写到哪。

import cv2
import numpy as np


def mouseOperation(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        print('左键按下')
    if event == cv2.EVENT_LBUTTONUP:
        print('左键抬起')
    if event == cv2.EVENT_LBUTTONDBLCLK:
        print('左键双击')
    if event == cv2.EVENT_RBUTTONDOWN:
        print('右键按下')
    if event == cv2.EVENT_RBUTTONUP:
        print('右键抬起')
    if event == cv2.EVENT_RBUTTONDBLCLK:
        print('右键双击')
    if event == cv2.EVENT_MOUSEMOVE:
        print('鼠标移动')
    if event == cv2.EVENT_MBUTTONDOWN:
        print('滚轮按下')
    if event == cv2.EVENT_MBUTTONUP:
        print('滚轮抬起')
    if event == cv2.EVENT_MBUTTONDBLCLK:
        print('滚轮双击')
    if event == cv2.EVENT_MOUSEWHEEL:
        print('滚轮滚动')
        if flags > 0:
            print('向前滚动')
        else:
            print('向后滚动')
    # if event == cv2.EVENT_MOUSEHWHEEL:    # 一般用不到,因为一般鼠标没有这个滚轮,有的鼠标有这个滚轮
    #     print('滚轮左右滚动')
    #     if flags > 0:
    #         print('向左滚动')  
    #     else:
    #         print('向右滚动')
       if flags == cv2.EVENT_FLAG_ALTKEY:
        print('摁住Alt')
    if flags == cv2.EVENT_FLAG_CTRLKEY:
        print('摁住Ctrl')
    if flags == cv2.EVENT_FLAG_SHIFTKEY:
        print('摁住Shift')
    if flags == cv2.EVENT_FLAG_LBUTTON:
        print('摁住左键拖拽')
    if flags == cv2.EVENT_FLAG_MBUTTON:
        print('摁住滚轮拖拽')
    if flags == cv2.EVENT_FLAG_RBUTTON:
        print('摁住右键拖拽')

'''
    np.ones(shape, dtype, order)
# shape(高,宽,色彩通道数) 
# dtype 常用的是np.unit8
'''
img = np.ones((500, 500, 3), np.uint8)
img = img * 255                     # 纯白图像
'''
cv2.namedWindow(winname,flags)
#  winname是窗口名字
#  flags为窗口显示方式,cv2.WINDOW_NORMAL为正常显示,可以调整大小
# cv2.WINDOW_AUTOSIZE显示原图片的大小,用户不能调整大小
'''
cv2.namedWindow('img')
'''
    cv2.setMouseCallback(windowName, onMouse, param )
# windowName 要 *** 作的窗口名,有多个窗口时,仅在指定名字的窗口上有效
# onMouse 回调函数,鼠标事件时被调用的函数指针
# 函数指针原型为void Fun(int event, int x, int y, int flags, void* param)
# event 鼠标的 *** 作动作 x和y,鼠标所在的坐标
# 后两个参数暂时用不到,放那就行
'''
cv2.setMouseCallback('img', mouseOperation)
while 1:
    '''
       cv2.imshow(winname,mat)
    # winname为显示的窗口
    # mat 需要显示的图像
    '''
    cv2.imshow("img", img)
    if cv2.waitKey(10) & 0xFF == 27:    # 按下Esc键退出
        break
cv2.destroyAllWindows()  # 销毁所有窗口

结果如下图。当鼠标执行各种 *** 作时,会输出对应的动作名称。为了更好的看到效果,可以先注释掉一些动作,执行程序。

鼠标 *** 作这比较简单,就先这样。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5700605.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存