setMouseCallbacks用法
时间: 2023-10-13 12:15:08 浏览: 28
setMouseCallback是OpenCV中的一个函数,用于设置鼠标事件的回调函数。该函数可以绑定到一个窗口上,当鼠标事件发生时,会调用相应的回调函数。
以下是setMouseCallback的函数原型:
```
void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata = 0);
```
其中,参数`winname`表示窗口的名称;参数`onMouse`表示鼠标事件的回调函数;参数`userdata`表示用户数据,可以为空。
下面是一个示例,演示如何在窗口中设置鼠标事件的回调函数:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
void onMouse(int event, int x, int y, int flags, void* userdata)
{
if (event == EVENT_LBUTTONDOWN)
{
printf("Left button of the mouse is clicked - position (%d, %d)\n", x, y);
}
else if (event == EVENT_RBUTTONDOWN)
{
printf("Right button of the mouse is clicked - position (%d, %d)\n", x, y);
}
}
int main()
{
Mat img = imread("test.jpg");
namedWindow("image");
setMouseCallback("image", onMouse, NULL);
imshow("image", img);
waitKey(0);
destroyAllWindows();
return 0;
}
```
在这个示例中,我们首先读入一张图片,然后创建一个名为“image”的窗口,并调用setMouseCallback函数将鼠标事件的回调函数onMouse绑定到该窗口上。在onMouse函数中,我们对鼠标事件进行了处理,当鼠标左键或右键被按下时,打印出鼠标的位置坐标。最后,我们显示图片,等待用户按下任意键后退出程序。