C++ cvSetMouseCallback-事件来自哪个窗口?
我使用C++ cvSetMouseCallback-事件来自哪个窗口?,c++,opencv,C++,Opencv,我使用imshow创建了许多窗口,并使用cvSetMouseCallback功能获取鼠标位置和当前按下的按钮 但我不明白事件来自哪个窗口?如何知道哪个窗口生成什么事件?您可以使用cvSetMouseCallback函数上的param参数将用户定义的参数传递给鼠标回调。然后,在回调中,您可以读取该参数以确定鼠标事件来自哪个窗口 以下是函数的定义: void cvSetMouseCallback(const char* window_name, CvMouseCallback on_mouse, v
imshow
创建了许多窗口,并使用cvSetMouseCallback
功能获取鼠标位置和当前按下的按钮
但我不明白事件来自哪个窗口?如何知道哪个窗口生成什么事件?您可以使用
cvSetMouseCallback
函数上的param
参数将用户定义的参数传递给鼠标回调。然后,在回调中,您可以读取该参数以确定鼠标事件来自哪个窗口
以下是函数的定义:
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;
}
#包括“opencv/cv.h”
#包括“opencv/highgui.h”
使用名称空间std;
使用名称空间cv;
鼠标上的void(int事件、int x、int y、int标志、void*param)
{
if(event==event_LBUTTONDOWN)
{
常量字符*winname=(常量字符*)参数;
非常感谢你。我按照你说的解决了这个问题。如果这个答案对你有效,你应该把它标记为已接受的答案。