티스토리 뷰

OpenCV에서 자체적으로 지니고 있는 마우스 이벤트를 활용하여 마우스로 클릭한 지점의 좌표를 찾는 코드를 짜보자.

 

 마우스 이벤트는 cv.setMouseCallback 함수를 통해 마우스 이벤트를 처리할 Window에 등록된다. setMouseCallback 함수가 호출되었을 때 어떤 행동을 취할지는 사용자가 커스텀할 수 있는데, 이번에는 mouse_callback 이라는 함수를 만들어 마우스 왼쪽버튼을 클릭했을 때의 좌표를 저장하도록 작성했다. 

 

 이 코드를 이미지 상 특정 부분의 좌표를 찾는 데 활용할 계획이라, opencv가 폴더 안에 들어있는 모든 이미지들을 순회하도록 하였고 클릭한 지점의 x,y좌표는 따로 저장해 두었다(x_points, y_points). 

 

 여러 이미지를 순회할 때, 한 이미지에서의 작업이 끝나면 다음 이미지로 넘어가려면 esc 버튼을 눌러야 하도록 작성하였다. 또한, 지정해둔 폴더 안의 모든 이미지를 보기 전까지 창을 종료할 수 없다. 즉, 중간에 프로그램을 끌 수 없다는 것!

 

작동법을 정리하면 다음과 같다.

step1. 이미지에서 원하는 부분을 마우스로 클릭한다.
step2. 클릭이 끝나면 esc 버튼을 누른다.
step3. step1 step2의 과정을 반복한다.

 

 

 

 

실행 코드

이 코드를 실행해보면 다음과 같이 화면에 이미지 창이 만들어진다.

이제 이미지들을 차례대로 확인하면서 원하는 부위에 마우스 클릭하는 작업을 반복하면 된다. 폴더 안의 모든 이미지의 작업이 끝나면 아래와 같이 x좌표 리스트, y좌표 리스트가 반환되는 것을 확인할 수 있다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함