#include
#include
using namespace std;
using namespace cv;
#define WINDOW "原图"
Mat g_srcImage;
Point previousPoint;
void On_mouse(int event, int x, int y, int flags, void*);
int main()
{
g_srcImage = imread("test.png", 1);
imshow(WINDOW, g_srcImage);
setMouseCallback(WINDOW, On_mouse, 0);
cout << 1;
waitKey(0);
return 0;
}
void On_mouse(int event, int x, int y, int flags, void*)
{
if (event == EVENT_LBUTTONDOWN)
{
previousPoint = Point(x, y);
}
else if (event == EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON))
{
Point pt(x, y);
line(g_srcImage, previousPoint, pt, Scalar(0, 0, 255), 2, 5, 0);
previousPoint = pt;
imshow(WINDOW, g_srcImage);
}
}
这明显是setmousecallback是开启了一个子线程监听,所以才会先输出1