【问题标题】:Can I get the mouse position in OpenCV without a mouse event?我可以在没有鼠标事件的情况下在 OpenCV 中获取鼠标位置吗?
【发布时间】:2017-02-02 15:13:01
【问题描述】:

我找到的所有教程都使用setMouseCallback() 设置一个回调函数,鼠标位置传递给该函数。不幸的是,此函数仅在发生实际鼠标事件时调用,但我想在鼠标上没有按键时获取鼠标位置。

这在 OpenCV 中可行吗?

【问题讨论】:

  • EVENT_MOUSEMOVE docs.opencv.org/master/d7/dfc/… 似乎是一个好的开始,不是吗?
  • @Miki 看起来是这样,但事实并非如此。 EVENT_MOUSEMOVE 可以检查,但这并没有给我任何关于指针位置的信息。此信息仅传递给回调函数,除非按下、按住或释放其中一个鼠标按钮,否则不会调用该回调函数。
  • 它确实对我有用。如果这不是您需要的,请告诉我;)。
  • 您说的完全正确,效果很好。我的问题是当鼠标移动时我没有重绘,只有在发生其他鼠标事件时才重绘。愚蠢的错误,非常感谢!

标签: c++ opencv callback mouse


【解决方案1】:

你可以使用EVENT_MOUSEMOVE来获取鼠标的位置:

#include <opencv2\opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

void mouse_callback(int  event, int  x, int  y, int  flag, void *param)
{
    if (event == EVENT_MOUSEMOVE) {
        cout << "(" << x << ", " << y << ")" << endl;
    }
}

int main()
{
    cv::Mat3b img(200, 200, Vec3b(0, 255, 0));

    namedWindow("example");
    setMouseCallback("example", mouse_callback);

    imshow("example", img);
    waitKey();

    return 0;
}

【讨论】:

    猜你喜欢
    • 2011-02-05
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2014-08-23
    相关资源
    最近更新 更多