GUI 인터페이스 활용하기

정강민·2022년 1월 3일
0

OpenCV

목록 보기
5/9

윈도우 생성하기

# 윈도우 생성
cv2.namedWindow(window_name, cv2.WINDOW_NORMAL)

cv2.nameWindow(window_name, flag)

  • OpenCV 는 알고리즘 개발자들이 분석을 쉽게 할 수 있도록 간단한 GUI를 제공
    cv2.namedWindow() 함수는 이미지가 그려질 창을 생성하며, 이미지가 그려지는 창의 구분은 문자열 타입의 윈도우 이름으로 식별
    cv2.WINDOW_NORMAL, cv2.WINDOW_FULLSCREE 등 창을 최대화 했을 때 자동으로 리사이징 할 건지, 리사이징 한다면 종횡비를 지키며 리사이징 할 건지 다양하게 선택 가능

이미지 창에 그리기

# 이미지 읽기
img_path = "./lena.jpg"
img_color = cv2.imread(img_path, cv2.IMREAD_COLOR)
# 윈도우 생성
window_name = "GUI_EXAMPLE"
cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) 
cv2.imshow(window_name, img_color)

cv2.imshow(window_name, image)

image를 window_name 이름을 가진 창에 출력

마우스 활용하기

# 콜백함수 등록
param = [param1, param2]
cv2.setMouseCallback(window_name, onMouse, param)
  • 콜백함수: 특정 조건이 걸릴 때마다 호출되는 함수
def onMouse(event, x, y, flags, param):
# 마우스를 더블 클릭한 경우
if event == cv2.EVENT_LBUTTONDBLCLK:
center = (x, y)
radius = 10
color = param[0]
img = param[1]
cv2.circle(img, center, radius, color, 2)

cv2.setMouseCallback(window_name, callback_function, param)

  • 마우스 왼쪽 버튼 더블 클릭 이벤트가 발생 시 원을 이미지에 그리는 콜백을 등록

키보드 활용하기

# 활성화된 윈도우 창에서 q를 누르면 창이 꺼지도록 종료 
key_pressed = cv2.waitKey(1)
if key_pressed == ord("q"):
	exit(0)

key_pressed = cv2.waitKey(millisecond)

  • cv2.namedWindow()나 cv2.imshow()로 생성된 윈도우가 키보드 입력을 받을 수 있도록 키 입력이 될 때까지 millisecond만큼 입력을 기다림
  • 눌린 키의 16진수 값을 반환 후 ord() 내장 함수를 이용하여 16진수가 아닌 문자를 비교
profile
DA/DA/AE

0개의 댓글