处理的函数如下:
void f(int event, int x, int y, int flags, void* param);
- event为所发生的事件名
- x,y为鼠标在图片上的坐标
- 全部的事件:
enum
{
EVENT_MOUSEMOVE =0,
EVENT_LBUTTONDOWN =1,
EVENT_RBUTTONDOWN =2,
CEVENT_MBUTTONDOWN =3,
EVENT_LBUTTONUP =4,
EVENT_RBUTTONUP =5,
EVENT_MBUTTONUP =6,
EVENT_LBUTTONDBLCLK =7,
EVENT_RBUTTONDBLCLK =8,
EVENT_MBUTTONDBLCLK =9,
EVENT_MOUSEWHEEL =10,
EVENT_MOUSEHWHEEL =11
};
enum
{
EVENT_FLAG_LBUTTON =1,
EVENT_FLAG_RBUTTON =2,
EVENT_FLAG_MBUTTON =4,
EVENT_FLAG_CTRLKEY =8,
EVENT_FLAG_SHIFTKEY =16,
EVENT_FLAG_ALTKEY =32
};
namedWindow("I", 1);
setMouseCallback("I", mouse_I, NULL);
void mouse_I(int event, int x, int y, int flags, void* param)
{
switch (event)
{
case EVENT_LBUTTONDOWN:
IPoint = Point2f(x, y);
break;
case EVENT_LBUTTONUP:
src[i] = IPoint;
circle(I, src[i], 7, Scalar(0), 3);
i += 1;
break;
default:
break;
}
}