관리 메뉴

코코야이야기

[c++] OpenCV 도형그리기5 본문

프로그래밍/OpenCV

[c++] OpenCV 도형그리기5

코코야 2015. 9. 22. 14:00
반응형

소스코드

//마우스 이벤트 처리

//마우스 왼쪽버튼 파란원, 오른쪽버튼 빨간원

#include "cv.h"
#include "highgui.h"
void on_mouseEvent (int event, int x, int y, int flags, void* param);

int main()
{
 IplImage *dstImage;
 dstImage = cvCreateImage(cvSize(512,512), IPL_DEPTH_8U,3);

 cvSet(dstImage, CV_RGB(255,255,255));

 cvNamedWindow("Mouse Event Handling",CV_WINDOW_AUTOSIZE);
 cvShowImage("Mouse Event Handling", dstImage);

 cvSetMouseCallback("Mouse Event Handling", on_mouseEvent,(void *)dstImage);
 //이름이 Mouse Event Handling 인 윈도우에서 발생하는 마우스이벤트를 처리할 핸들러 함수 on_mouseEvent로 지정.
 //즉, Mouse Event Handling인 윈도우에서 마우스 이벤트가 발생할 때마다 핸들러로 지정된 on_mouseEvent함수가 호출됨.

 cvWaitKey(0);

 cvDestroyAllWindows();
 cvReleaseImage(&dstImage);
 return 0;
}

void on_mouseEvent(int event, int x, int y, int flags, void* param)
{
 IplImage *image;
 image = (IplImage *)param;

 switch (event)
 {
 case CV_EVENT_LBUTTONDOWN: if(flags & CV_EVENT_FLAG_SHIFTKEY)
           cvRectangle(image, cvPoint(x-5, y-5), cvPoint(x+5,y+5), CV_RGB(255,0,0));
          else
           cvCircle(image,cvPoint(x,y),5,CV_RGB(0,0,255),5);
        break;
 case CV_EVENT_RBUTTONDOWN: cvCircle(image,cvPoint(x,y),5,CV_RGB(255,0,0),5);
  break;
 case CV_EVENT_LBUTTONDBLCLK: cvSet(image,CV_RGB(255,255,255));
  break;
 }
 cvShowImage("Mouse Event Handling",image);
}

 

 

출력영상

 

 

반응형

'프로그래밍 > OpenCV' 카테고리의 다른 글

[c++] OpenCV 영상엣지검출  (0) 2015.09.23
[c++] OpenCV 트랙바추가  (0) 2015.09.22
[c++] OpenCV 문자열출력2  (0) 2015.09.21
[c++] OpenCV 문자열출력1  (0) 2015.09.21
[c++] OpenCV 도형그리기4  (0) 2015.09.19
Comments