메뉴 닫기

OpenCV 마우스 & 키보드 이벤트 처리 예제

OpenCV에서 마우스와 키보드 이벤트를 처리하는 방법에 대한 간단한 예제 코드입니다.

마우스 입력

  • 마우스 왼쪽 버튼 누르는 동안, 화면에 그림 그리기

키보드 입력

  • ESC를 누르면 종료
  • 좌우 화살표 키를 누르면 Brightness 변화

예제 코드

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

Mat img;
Point pt_last;

void on_mouse(int event, int x, int y, int flags, void*);

int main()
{
	img = imread("lena512.bmp", IMREAD_GRAYSCALE);

	if (img.empty())
	{
		cerr << "Failed to open image" << endl;
		return 1;
	}

	namedWindow("img");
	setMouseCallback("img", on_mouse);

	imshow("img", img);
	
	while (true)
	{
		int keycode = waitKeyEx(0);

		if (27 == keycode)
		{
			break;
		}
		else if (0x250000 == keycode)
		{
			img -= 5;
			imshow("img", img);
		}
		else if (0x270000 == keycode)
		{
			img += 5;
			imshow("img", img);
		}
	}

	return 0;
}

void on_mouse(int event, int x, int y, int flags, void*)
{
	switch (event)
	{
	case EVENT_LBUTTONDOWN:
		pt_last = Point(x, y);
		cout << "EVENT_LBUTTONDOWN: " << x << ", " << y << endl;
		break;
	case EVENT_LBUTTONUP:
		cout << "EVENT_LBUTTONUP: " << x << ", " << y << endl;
		break;
	case EVENT_MOUSEMOVE:
		if (flags & EVENT_FLAG_LBUTTON) 
		{
			line(img, pt_last, Point(x, y), Scalar(100, 255, 215));
			imshow("img", img);
			pt_last = Point(x, y);
		}
		break;
	}
}

실행 결과

마우스 입력 결과





키보드 입력 결과





답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다