Python/OpenCV

이벤트 처리

ddingz 2022. 2. 16. 18:12

마우스 이벤트

  • cv2.setMouseCallback(win_name, onMouse [, param]) : onMouse 함수를 등록
    • win_name : 이벤트를 등록할 윈도 이름
    • onMouse : 이벤트 처리를 위해 미리 선언해 놓은 콜백 함수
    • param : 필요에 따라 onMouse 함수에 전달할 인자
  • MouseCallback(event, x, y, flags, param) : 콜백 함수 선언부
    • event : 마우스 이벤트 종류, cv2.EVENT_로 시작하는 상수(12가지)
      • cv2.EVENT_MOUSEMOVE : 마우스 움직임
      • cv2.EVENT_LBUTTONDOWN : 왼쪽 버튼 누름
      • cv2.EVENT_RBUTTONDOWN : 오른쪽 버튼 누름
      • cv2.EVENT_MBUTTONDOWN : 가운데 버튼 누름
      • cv2.EVENT_LBUTTONUP : 왼쪽 버튼 뗌
      • cv2.EVENT_RBUTTONUP : 오른쪽 버튼 뗌
      • cv2.EVENT_MBUTTONUP : 가운데 버튼 뗌
      • cv2.EVENT_LBUTTONDBCLK : 왼쪽 버튼 더블 클릭
      • cv2.EVENT_RBUTTONDBCLK : 오른쪽 버튼 더블 클릭
      • cv2.EVENT_MBUTTONDBCLK : 가운데 버튼 더블 클릭
      • cv2.EVENT_MOUSEWHEEL : 휠 스크롤
      • cv2.EVENT_MOUSEHWHEEL : 휠 가로 스크롤
    • x, y : 마우스 좌표
    • flags : 마우스 동작과 함께 일어난 상태, cv2.EVENT_FLAG_로 시작하는 상수(6가지)
      • cv2.EVENT_FLAG_LBUTTON(1) : 왼쪽 버튼 누름
      • cv2.EVENT_FLAG_RBUTTON(2) : 오른쪽 버튼 누름
      • cv2.EVENT_FLAG_MBUTTON(4) : 가운데 버튼 누름
      • cv2.EVENT_FLAG_CTRLKEY(8) : Ctrl 키 누름
      • cv2.EVENT_FLAG_SHIFTKEY(16) : Shift 키 누름
      • cv2.EVENT_FLAG_ALTKEY(32) : Alt 키 누름
    • param : cv2.setMouseCallback() 함수에서 전달한 인자

트랙바

  • cv2.createTrackbar(trackbar_name, win_name, value, count, onChange) : 트랙바 생성
    • trackbar_name : 트랙바 이름
    • win_name : 트랙바를 표시할 창 이름
    • value : 트랙바 초기 값, 0~count 사이의 값
    • count : 트랙바 눈금의 개수, 트랙바가 표시할 수 있는 최대 값
    • onChange : TrackbarCallback, 트랙바 이벤트 핸들러 함수
  • TrackbarCallback(value) : 트랙바 이벤트 콜백 함수
    • value : 트랙바가 움직인 새 위치 값
  • pos = cv2.getTrackbarPos(trackbar_name, win_name)
    • trackbar_name : 찾고자 하는 트랙바 이름
    • win_name : 트랙바가 있는 창의 이름
    • pos : 트랙바 위치 값