더북(TheBook)

setMouseCallback() 함수를 사용하여 마우스 이벤트를 처리하는 예제 코드를 코드 4-11에 나타냈습니다. 이 예제 프로그램은 마우스 왼쪽 버튼이 눌리거나 떼어진 좌표를 콘솔 창에 출력하고, 마우스 왼쪽 버튼을 누른 상태로 마우스를 움직이면 마우스 움직임 궤적을 영상 위에 노란색으로 표시합니다. 이 예제 코드는 내려받은 예제 파일 중 ch04/mouse 프로젝트에서 확인할 수 있습니다.

코드 4-11 마우스 이벤트 처리 예제 프로그램 [ch04/mouse]

01    #include "opencv2/opencv.hpp"
02    #include <iostream>
03     
04    using namespace cv;
05    using namespace std;
06     
07    Mat img;
08    Point ptOld;
09    void on_mouse(int event, int x, int y, int flags, void*);
10     
11    int main(void)
12    {
13        img = imread("lenna.bmp");
14     
15        if (img.empty()) {
16            cerr << "Image load failed!" << endl;
17            return -1;
18        }
19    
20        namedWindow("img");
21        setMouseCallback("img", on_mouse);
22     
23        imshow("img", img);
24        waitKey(0);
25     
26        return 0;
27    }
28     
29    void on_mouse(int event, int x, int y, int flags, void*)
30    {
31        switch (event) {
32        case EVENT_LBUTTONDOWN:
33            ptOld = Point(x, y);
34            cout << "EVENT_LBUTTONDOWN: " << x << ", " << y << endl;
35            break;
36        case EVENT_LBUTTONUP:
37            cout << "EVENT_LBUTTONUP: " << x << ", " << y << endl;
38            break;
39        case EVENT_MOUSEMOVE:
40            if (flags & EVENT_FLAG_LBUTTON) {
41                line(img, ptOld, Point(x, y), Scalar(0, 255, 255), 2);
42                imshow("img", img);
43                ptOld = Point(x, y);
44            }
45            break;
46        default:
47            break;
48        }
49    }

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.