【问题标题】:How to remove the mousewheel default zoom on opencv如何删除opencv上的鼠标滚轮默认缩放
【发布时间】:2018-09-12 22:05:28
【问题描述】:

我希望在 OpenCV 上使用鼠标滚轮上下滚动时删除默认缩放行为。我设置了一个鼠标回调方法(定义如下),以便在没有成功的情况下覆盖此行为:

import cv2

def mouse_callback(event, x, y, flags, param):
    global index

    if event == cv2.EVENT_MOUSEWHEEL :
        if flags > 0:
            index += 1
        elif flags < 0:
            index -= 1
        index %= length

cv2.namedWindow('window', cv2.WINDOW_NORMAL)
cv2.setMouseCallback('window', mouse_callback)
cv2.imshow('window', path)

有没有人成功地消除了这种默认行为?

【问题讨论】:

  • 现在正在寻找确切的东西!

标签: python-3.x opencv


【解决方案1】:

好的,这似乎不是简单的方法,因为 opencv-python 默认使用 HighGui,它主要用于调试。

解决方案 1

这就是我所做的,并且有效。您需要自己重建opencv-python 项目,并对文件window_QT.cpp 中包含的opencv 进行一些更改。在那里您可以找到函数 DefaultViewPort::wheelEvent,您可以在其中删除 scaleView 函数调用。

解决方案 2

您还需要重建 opencv-python 并选择 GTK 而不是 QT ui。我从here 那里得到了这个建议。

如何构建opencv-python?

here 描述了如何构建 opencv-python 项目。你主要需要git clone和运行python setup.py buildpython setup.py install。请注意,解决方案 1 和 2 仅适用于具有更改的 opencv 库的机器(除非您查看 packaging)。

解决方案 3

您使用完全不同的库来显示您的图像/帧,例如 tkinterPyGame

解决方案 4

这取决于您的用例,但使用 python-evdev 您可以“Get exclusive access to a device”。这意味着,只有您的应用程序才能从特定设备(如鼠标)接收事件。如果您深入挖掘,也可能有一个选项只自我抓住某​​些事件。

【讨论】:

    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多