본문 바로가기

📜✏️노트 자리없어서 적는 IT 지식📜✏️

컴퓨터 비전(computer vision) 3주차 정리

 

 

 

 

윈도우 제어와 이벤트 처리 , 그리기 함수

 

 

 

 

인간과 컴퓨터의 상호작용 = HCI / Human + Computer + Interface

 

 

영상처리 - > 2차원 행렬에 대한 연산.

 

OpenCV는 윈도우가 활성화된 상태에서만 마우스나 키보드 이벤트를 감지가능.

 

 

cv2.namedWindow() - 함수에 윈도우 이름을 지정하여 윈도우를 생성 -> 생성된 이름으로 창크기 변경, 창닫기, 창 이동 등을 제어할 수 있으며 이벤트 발생도 해당 윈도우 이름으로 제어함.

함수들 이름 한번 씩 읽어보기

 

imshow(winname, mat) > None 이름으로 윈도우를 생성하고 영상을 표기.

mat(numpy.ndarry) 윈도우에 표시되는 영상(행렬이 화소값을 밝기로 표시)

 

destoryWindow(winname) -> None

: 인수로 지정된 타이틀 윈도우 파괴

 

destoryAllWindows() -> None

: HighGUI( OpenCV 지원 라이브러리)로 생성된 모든 윈도우 파괴

 

moveWindow(winname, x, y) -> None

: winname 이름의 윈도우를 지정된 위치x,y)로 이동, 이동되는 윈도우의 기준 위치는 좌측 상단임.

 

resizeWindow(winname, width, height) -> None

: 윈도우의 크기를 재조정함.

width, height 변경 윈도우의 가로, 세로 크기.

 

waitKey ()는 키보드 이벤트 대기 함수

:0이면 무한대기

 

 

1차시 끝

 

 

----------------------- 2차시 -------------------------

 

이벤트 처리를 위해 콜백 (callback) 함수를 사용함.

 

-콜백 함수는 개발자가 시스템 함수를 직접 호출하는 방식이 아니라, 어떤 이벤트가 발생하는 특정 시점에 도달했을 때

시스템이 개발자가 등록한 함수를 호출하는 방식.

 

 

OpenCV에서는 일반적인 콜백함수가 아닌

cv2.waitKey함수와 cv2.waitKeyEx()함수를 제공함.

 

두 함수는 지연시간을 지정하여 호출하면 키 이벤트에 해당하는 코드값을 반환

 

 

cv2.waitKey함수([, delay]) > retval

delay(ms, millisecond) 시간만큼 키 입력을 대기하고, 키 이벤트가 발생하면 해 키 값 반환

delay <= 0 키 이벤트 발생까지 무한대기

 

 

cv2.waitKetEx([, delay]) -> retval

: waitKey()와 동일하지만, 전체 키 코드를 반환함(화살표 키 등을 입력 받을 때 사용가능)

 

주의키보드의 키 입력을 받는 윈도우가 활성화되어 있지 않으면 이벤트가 발생하지 않음을 주의(실행 후 윈도우를 클릭하여 활성화시킨 후 키보드의 키를 눌러 확인)

 

 

마우스 이벤트 제어;

사용자가 setMouseCallback()함수를 통해 시스템에 등록

 

setMouseCallback(winname, onMouse) param=None)

여기서 winnameonMouse는 아래 이벤트와 같아야한다.

 

winname = 이벤트 발생을 확인할 윈도우 이름

onMouse = 마우스 이벤트를 처리하는 콜백함수 이름

param = 이벤트 처리 함수로 전달할 추가적인 사용자 정의 함수

 

 

 

getTrackbarPos(trackbarname, winname) -> retval

: 지정한 트랙바의 슬라이더 위치를 반환함

 

setTrackvarPos

: 지정한 트랙바의 슬라이더 위치를 설정

 

 

트랙바(trackbar) : 일정한 범위에서 특정한 값을 선택할 때 사용하는 일종의 스크롤바, 슬라이더 바

 

createTrackbar()함수로 생성.

 

★ 트랙바 개념

 

 

원래는 RGB 순서지금  OpenCV에서 BGR 이미지 순서임

R빨강

G초록

B파랑 인데.

OpenCV에서는 역순의 이미지이다.

 

 

 

--------------3차시---------------

 

그리기 함수

 

 

 

선형타입과 비트 시프트

아래 연결 방식

 

 

실수 형태로 소수점이 발생하기에 정수 연산으로만 선을 그릴 수 있도록 개발된 알고리즘은?

: 브레젠험 알고리즘(선을 그리는 알고리즘)

 

계단 현상 없애기 -> 안티 에일리어싱

 

영상에다가 글자를 쓰는 함수는? cv2.putText()

RGB가 아니라 BGR임

 

 

cv2.circle 행렬에 원을 그려주는 함수(OpenCV에서 사용)

 

그리기는 색상, 함수, 좌표, 인수를 설정하면 도형이 나온다.

 

cv2.ellipse 타원을 그리는 함수의 인수 지정이 조금 복잡함

 

ellipse(image, pt1 , size, 0, 30, 270, orange ,4) # 호 그리기

0은 기울기 = 0이니까 원 그대로

30은 시작 각도 30도면 가로가 0

270은 끝 각도 , orange는 색상

 

 

 

 

--------------------------  3주차 끝  ---------------------