$ cat mousecb.cpp #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>
using namespace std; using namespace cv;
Point mpos(0,0);
void CallBackFunc(int event, int x, int y, int flags, void* userdata) { cout << "pos (" << x << "," << y << ") "; mpos.x = x; mpos.y = y;
switch(event) { case EVENT_MOUSEMOVE: cout << "EVENT_MOUSEMOVE" << endl; break; case EVENT_LBUTTONDOWN: cout << "EVENT_LBUTTONDOWN" << endl; break; case EVENT_LBUTTONUP: cout << "EVENT_LBUTTONUP" << endl; break;
case EVENT_RBUTTONDOWN: cout << "EVENT_RBUTTONDOWN" << endl; break; case EVENT_RBUTTONUP: cout << "EVENT_RBUTTONUP" << endl; break;
case EVENT_MBUTTONDOWN: cout << "EVENT_MBUTTONDOWN" << endl; break; case EVENT_MBUTTONUP: cout << "EVENT_MBUTTONUP" << endl; break;
case EVENT_LBUTTONDBLCLK: cout << "EVENT_LBUTTONDBLCLK" << endl; break; case EVENT_RBUTTONDBLCLK: cout << "EVENT_RBUTTONDBLCLK" << endl; break; case EVENT_MBUTTONDBLCLK: cout << "EVENT_MBUTTONDBLCLK" << endl; break; /* case EVENT_MOUSEWHEEL: cout << "EVENT_MOUSEWHEEL" << endl; break; case EVENT_MOUSEHWHEEL: cout << "EVENT_MOUSEHWHEEL" << endl; break; */ } }
int main(int argc, char** argv) { // Read image from file Mat img = imread("MyPic.JPG");
//if fail to read the image if ( img.empty() ) { cout << "Error loading the image" << endl; return -1; }
//Create a window namedWindow("My Window", 1);
//set the callback function for any mouse event setMouseCallback("My Window", CallBackFunc, NULL);
//show the image imshow("My Window", img); for(;;) { rectangle(img, Point(mpos.x - 10, mpos.y - 10), Point(mpos.x + 10, mpos.y + 10), Scalar(0,0,0),2,8,0);
imshow("My Window", img); // Wait until user press some key if(waitKey(30) >= 0) break; }
return 0; } |