코코야이야기
[c++] OpenCV 도형그리기5 본문
소스코드
//마우스 이벤트 처리
//마우스 왼쪽버튼 파란원, 오른쪽버튼 빨간원
#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 |