C# OpenCV 강좌 : 제 37강 - 마우스 콜백
마우스 콜백(OnMouseCallback)
CvWindow
를 사용하여 새롭게 띄운 윈도우 창에서는 C#에 포함되어 있는 이벤트를 사용할 수 없습니다.
OnMouseCallback
을 사용하여 마우스에 관한 이벤트를 실행할 수 있습니다.
원본(Source, src)
은 영상이나 이미지를 사용합니다.
메인 코드
세부 코드
전역 변수로 win
와 src
를 선언합니다.
이는 click()
함수에서 지속적으로 사용되기 때문에 전역 변수
로 선언합니다.
CvWindow
가 표시될 곳에 삽입합니다.
만약, 폼을 로드하자마자 사용한다면 private void Form1_Load(object sender, EventArgs e){}
구문에 삽입합니다.
win
을 선언하여 OpenCV
의 제목을 가지고 src
이미지를 표시합니다.
win.OnMouseCallback += new CvMouseCallback(click);
를 사용하여 win 창에 마우스 콜백
과 사용될 함수
를 포함시킵니다.
- Tip :
+=
으로 선언해야합니다.
click()
사용자 정의 함수를 만듭니다.
eve
는 마우스의 클릭에 대한 값을 의미하며 x
, y
는 마우스의 좌표입니다.
flag
는 플래그 키를 의미합니다.
마우스의 왼쪽 버튼을 클릭
할 때 작동하며 src에 그린 후, win.Image = src;
를 이용하여 다시 출력하는 방식입니다.
마우스의 오른쪽 버튼을 클릭
과 Ctrl키를 클릭
을 동시에 할 때 작동하며 위와 같이 src에 그린 후 다시 출력하는 방식입니다.
플래그 키
를 사용할 경우 (flag & MouseEvent.FlagCtrlKey) != 0
을 사용해야 클릭한다는 것을 의미합니다. ==
을 사용 시 클릭하지 않을 경우 입니다.
- 마우스
LButtonDown
: 마우스 왼쪽 버튼을 누를 때LButtonUp
: 마우스 왼쪽 버튼을 뗄 때LButtonDoubleClick
: 마우스 왼쪽 버튼을 더블 클릭할 때MButtonDown
: 마우스 휠 버튼을 누를 때MButtonUp
: 마우스 휠 버튼을 뗄 때MButtonDoubleClick
: 마우스 휠 버튼을 더블 클릭할 때RButtonDown
: 마우스 오른쪽 버튼을 누를 때RButtonUp
: 마우스 오른쪽 버튼을 뗄 때RButtonDoubleClick
: 마우스 오른쪽 버튼을 더블 클릭할 때MouseMove
: 마우스를 움직일 때
- 플래그 키
FlagLButton
: 마우스 왼쪽 버튼을 누른 상태로 드래그 할 때FlagMButton
: 마우스 휠 버튼을 누른 상태로 드래그 할 때FlagRButton
: 마우스 오른쪽 버튼을 누른 상태로 드래그 할 때FlagShiftKey
: Shift 키를 눌렀을 때FlagCtrlKey
: Ctrl 키를 눌렀을 때FlagAltKey
: Alt 키를 눌렀을 때
댓글 남기기