栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

012-OpenCV调用鼠标操作补充

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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()  # 销毁所有窗口

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/700484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号