Program/OPEN_CV

[Open CV] OpenCV-Python 기초 사용법 _ 키보드 이벤트 처리하기

사막여유 2022. 5. 1. 14:32
728x90

 

 - 키보드 입력 대기함수 ( cv2waitkey(dealy==None) ) 위 함수는 이 전 강의에서도 많이 사용했었는데 키보드의 입력이 들어올때까지 계속해서 기다리는 함수이다. delay = 밀리초 단위 대기 시간. delay가 0보다 작거나 같으면 무한히 기다린다. 디폴트값은 0이다.그리고 키보드의 입력이 들어오면 retval로 반환을 해주는데 눌린 키 값의 ASCII 코드로 반환된다.

따라서 눌린 키보드의 값과 같을때 waitkey 함수를 끝내고 싶다면

'해당ASCII' 와 같을때로 끝내도록 작성하여 줄 수 있다.

 

그리고 예외적으로 키보드의 특수키를 입력받을수도 있는데 

이는 cv2.waitKeyEX() 라는 함수를 사용하여 특수키를 입력받을 수 있다.

여기서 말하는 특수키는 insert, Delete, Home, End, PageUp, PageDown, F1,2,... , 방향키 등을 말한다.

 * 윈도우즈 운영체제에서만 동작하고있다.

 

아래 예제는 키보드 입력을 통해 영상을 처리하는 코드로 구성되어있다.

 

 

위 함수를 보게되면 cv2.waitKey 함수에서 27이라는 상수값 ( ASCII = ESC )을 받게되면 종료하게 되어있고

i 또는 I 값을 받게되면 이미지를 반전시키는 코드로 구성되어있다.

여기서 i 값을 받기 위해서는 파이썬에서 제공하는 ord라는 함수를 사용해서 i와 ord를 비교해주어야 한다.그리고 ~라는 코드는 논리연산자로 0을 1로 1을 0으로 바꿔주는 역할을 하는데unsigned char 같은 경우에서는 픽셀값을 255에서 해당 픽셀을 뺀것과 동일하게 사용된다.

 

예를들면 영상의 일부분을 따왔을때 [70,70,71,72,76,78,80,100] 의 값을 갖는다면이걸 틸드 시키면 [ 185,185,184,183,179,177,175,155] 의 값으로 반환되어 이미지 반전처리가 된다.

 

그리고 아래와같이 함수를 작성하면 i를 2번 눌러야 동작하는 걸 볼수 있는데

watieKey를 2번 동작하기 때문에 나오는 현상이다.

 

 

따라서 

waitkey 는 한번만 사용해야하는데

그렇게 코드를 작성하려고하면 key라는 변수에 waitkey함수를 걸어놓고아래에서 비교만 하게 된다면 입력을 한번만 받을 수 있다.

 * 또한 소문자와 대문자가 구분되기때문에 이를 주의해야 한다.

 

 

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/3L3avNW

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

728x90