作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 imshow
创建了许多窗口,并且我正在使用 cvSetMouseCallback
函数来获取鼠标位置和当前按下的按钮。
但我无法理解事件来自哪个窗口?我怎么知道哪个窗口生成什么事件?
最佳答案
您可以在cvSetMouseCallback
函数上使用param
参数将用户定义的参数传递给您的鼠标回调。然后,在您的回调中,您可以读取该参数以确定鼠标事件来自哪个窗口。
这里是 cvSetMouseCallback
的定义功能:
void cvSetMouseCallback(const char* window_name, CvMouseCallback on_mouse, void* param=NULL )
您可以使用第三个参数将指针传递给您喜欢的任何内容(例如,窗口的名称)。这是一个例子:
#include "opencv/cv.h"
#include "opencv/highgui.h"
using namespace std;
using namespace cv;
void on_mouse(int event, int x, int y, int flags, void* param)
{
if (event == EVENT_LBUTTONDOWN)
{
const char* winname = (const char*)param;
cout << "Mouse button down on window " << winname << endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
cvNamedWindow("win1");
cvNamedWindow("win2");
cvSetMouseCallback("win1", on_mouse, "win1");
cvSetMouseCallback("win2", on_mouse, "win2");
cvWaitKey(0);
return 0;
}
当您单击两个窗口中的任何一个时,此应用程序将在控制台中写入窗口名称。这是它的样子:
关于c++ - cvSetMouseCallback - 事件来自哪个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22923211/
我使用 imshow 创建了许多窗口,并且我正在使用 cvSetMouseCallback 函数来获取鼠标位置和当前按下的按钮。 但我无法理解事件来自哪个窗口?我怎么知道哪个窗口生成什么事件? 最佳答
我正在使用 OS X/X Code/OpenCV 2.2 编写眼动仪代码。作为 Eye Tracker 训练过程的一部分,我使用 cvSetMouseCallback 来捕获数据,如下所示:右击右眼;
我的类名称是 HandMotionRecognition,我在鼠标回调中调用 getColorPixel 方法。这是在使用 Visual Studio 2010 的 OpenCV 中,项目类型是 c+
我是一名优秀的程序员,十分优秀!