[Python] OpenCv를 이용하여 마우스 위치 가져오기


이 얼마만에 쓰는 파이썬 관련 글이란 말인가 ㅠㅠ

영상처리에서 마우스 만큼 또 많이 쓰는 게 없으니 오늘은 마우스 포인터 위치 받아오는

함수를 만들어보도록 하자

구글링 해보면 나오지만 마우스 포인터 위치를 받아오는 방법은

1. pynput 모듈을 이용하는 방법
2. OpenCV를 이용하는 방법
3. PyQt를 이용하는 방법

크게 3가지 경우가 많이 쓰이는 것 같다.

여기선 2번 OpenCV를 이용해서 해보도록 하자

왜냐면 이미 깔려있는데다가 다른 것 깔기 귀찮음으로 ㅎㅎ

OpenCV를 이용하려면 마우스 콜백함수를 이용하여 위치를 받아오면 된다.

일단 코드 부터 보도록 하자

import cv2 as cv    # OpenCV import
import numpy as np  # 행렬(img)를 만들기 위한 np import
# 마우스 이벤트 콜백함수 정의
def mouse_callback(event, x, y, flags, param): 
    print("마우스 이벤트 발생, x:", x ," y:", y) # 이벤트 발생한 마우스 위치 출력

img = np.zeros((256, 256, 3), np.uint8)  # 행렬 생성, (가로, 세로, 채널(rgb)),bit)

cv.namedWindow('image')  #마우스 이벤트 영역 윈도우 생성
cv.setMouseCallback('image', mouse_callback)

while(True):

    cv.imshow('image', img)

    k = cv.waitKey(1) & 0xFF
    if k == 27:    # ESC 키 눌러졌을 경우 종료
        print("ESC 키 눌러짐")
        break
cv.destroyAllWindows()
 

해당 프로그램도 종료 시 esc 키만 먹으니 윗쪽 닫기 버튼을 눌러도 소용없다!! 캬캬



모든 마우스 이벤트에 대해 적용되므로 이동, 좌,우 클릭 등 많은 문자열이 출력될 것이다


댓글

  1. 이미지나 영상을 넣어서 좌표를 받아올 수 있나요 ?

    답글삭제
    답글
    1. 위 소스에서 imshow 함수에 넣고자 하는 이미지를 넣으시면 됩니다.

      삭제

댓글 쓰기

이 블로그의 인기 게시물

[Python] 파이썬에서 Opencv를 이용해 웹캠 영상 읽어오기 및 저장

[MFC] 에디트 컨트롤에 계속 문자열 추가하기(List log)