[ Python OpenCV ] 파이썬 오픈씨브이 마우스 이벤트 - cv2.setMouseCallback

[ Python OpenCV ] 파이썬 오픈씨브이 마우스 이벤트 - cv2.setMouseCallback



1. OpenCV 가져오기




2. 이미지 읽어와 출력





3. 마우스 콜백

    마우스 입력 발생시 특정한 함수에 이벤트를 전달해 실행


    event : cv::MouseEventTypes 상수 중 하나 (마우스 입력 키)
    x : 마우스 이벤트의 X좌표입니다.
    y : 마우스 이벤트의 y좌표입니다.
    flags : cv::MouseEventFlags 상수 중 하나 (마우스 또는 외부 입력 키)
    param : 사용자 선택적 매개변수 데이터


4. 이미지 사이즈 변경 마우스 함수 작성




5. 마우스 함수 마우스 콜백 연결


    
    "Bird" : 뷰어 타이틀 이름
    Mouse_Event : 마우스 함수
    matBird : 콜백에 전달되는 선택적 매개변수


6. 마우스 이벤트 타입 정리

    cv.EVENT_MOUSEMOVE 마우스 포인터가 창 위로 이동
    cv.EVENT_LBUTTONDOWN : 마우스 왼쪽 버튼 다운
    cv.EVENT_RBUTTONDOWN : 마우스 오른쪽 버튼 다운
    cv.EVENT_MBUTTONDOWN : 마우스 가운데 버튼 다운
    cv.EVENT_LBUTTONUP : 마우스 왼쪽 버튼 업
    cv.EVENT_RBUTTONUP : 마우스 오른쪽 버튼 업
    cv.EVENT_MBUTTONUP : 마우스 가운데 버튼 업
    cv.EVENT_LBUTTONDBLCLK : 마우스 왼쪽 버튼 더블 클릭
    cv.EVENT_RBUTTONDBLCLK : 마우스 오른쪽 버튼 더블 클릭
    cv.EVENT_MBUTTONDBLCLK : 마우스 가운데 버튼더블 클릭
    cv.EVENT_MOUSEWHEEL : 마우스 휠 Flag 양수 및 음수 값은 휠 방향


7. 마우스 이벤트 플래그 정리

    cv.EVENT_FLAG_LBUTTON : 마우스 왼쪽 버튼 눌려져 있음
    cv.EVENT_FLAG_RBUTTON : 마우스 오른쪽 버튼이 눌려져 있음
    cv.EVENT_FLAG_MBUTTON : 마우스 가운데 버튼이 눌려져 있음
    cv.EVENT_FLAG_CTRLKEY : CTRL 키를 눌렀음
    cv.EVENT_FLAG_SHIFTKEY : SHIFT 키를 눌렀음
    cv.EVENT_FLAG_ALTKEY : ALT 키를 눌렀음


8. 소스 전체


import cv2 as cv

#이미지 읽어오기
matBird = cv.imread('Bird.jpg')
#이미지 사이즈 변경 및 출력
nSize = 500
matBird = cv.resize(matBird, dsize=(nSize, nSize))
cv.imshow("Bird", matBird)

#마우스 이벤트 함수
def Mouse_Event(event, x, y, flags, param):
    global nSize #전역 변수로 사용

    if event == cv.EVENT_LBUTTONDOWN: #왼쪽 클릭
        nSize -= 10
    elif event == cv.EVENT_RBUTTONDOWN: #오른쪽 클릭
        nSize += 10

    #이미지 사이즈 변경 및 출력
    matBird = cv.resize(param, dsize=(nSize, nSize))
    cv.imshow("Bird", matBird)

#뷰어 마우스 이벤트 세팅
cv.setMouseCallback("Bird", Mouse_Event, matBird)

#종료 방지
cv.waitKey()


9. 결과



    이미지 10회 클릭



==========
[ Python OpenCV ] 파이썬 오픈씨브이 마우스 이벤트 - cv2.setMouseCallback


댓글