OpenCV의 또 다른 중요한 모듈인 open_highgui는 그래픽 사용자 인터페이스(GUI) 기능을 제공하는 라이브러리입니다. 이 모듈은 이미지와 비디오 데이터를 표시하고, 사용자 입력을 처리하며, 간단한 상호작용을 가능하게 해줍니다. open_highgui는 주로 컴퓨터 비전 애플리케이션의 디버깅, 시각화, 결과 확인 등을 위해 사용됩니다.
목차
Toggle설명
open_highgui
는 OpenCV 라이브러리에서 제공하는 고수준 GUI(그래픽 사용자 인터페이스) 기능을 제어하는 모듈입니다. OpenCV는 컴퓨터 비전 및 이미지 처리 작업을 위한 인기 있는 오픈 소스 라이브러리로,open_highgui
모듈은 영상 및 비디오 파일을 읽고, 디스플레이하며, 사용자 입력을 처리하는 기능을 제공합니다.
open_highgui
주요 기능
- 영상 및 비디오 파일 읽기:
open_highgui
는 다양한 형식의 영상 및 비디오 파일을 읽을 수 있습니다. 이를 통해 이미지 또는 비디오 데이터를 읽어서 OpenCV에서 사용할 수 있는 형식으로 변환합니다. - 디스플레이:
open_highgui
를 사용하여 읽은 영상이나 비디오를 화면에 디스플레이할 수 있습니다. 이를 통해 영상 또는 비디오 데이터를 시각적으로 확인하고 분석할 수 있습니다. - 사용자 입력 처리:
open_highgui
는 마우스 및 키보드 이벤트를 처리할 수 있습니다. 사용자 입력에 따라 특정 동작을 수행하거나 영상 처리 알고리즘에 영향을 줄 수 있습니다.
- 예를 들어, 다음은
open_highgui
를 사용하여 이미지 파일을 읽고 화면에 디스플레이하는 간단한 코드의 예입니다.
import cv2
image = cv2.imread('image.jpg')
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
- 이 코드에서
cv2.imread()
함수를 사용하여 ‘image.jpg’ 파일을 읽고,cv2.imshow()
함수를 사용하여 이미지를 ‘Image’라는 창에 디스플레이합니다.cv2.waitKey(0)
은 사용자가 아무 키나 누를 때까지 창을 유지하도록 합니다. 마지막으로cv2.destroyAllWindows()
함수를 사용하여 모든 창을 닫습니다. - 위의 코드는 이미지를 읽고 디스플레이하는 간단한 예시이며,
open_highgui
는 영상 처리 및 컴퓨터 비전 애플리케이션에 다양한 기능을 제공합니다.
세부 기능
open_highgui
모듈에는 이미지와 비디오를 다양한 방식으로 디스플레이하고 제어할 수 있는 다양한 기능이 있습니다.
- 창 생성 및 디스플레이:
cv2.namedWindow(window_name, flags)
: 새로운 창을 생성합니다.window_name
은 창의 이름을 지정하고,flags
는 창의 속성을 설정합니다.cv2.imshow(window_name, image)
: 지정한 창에 이미지를 디스플레이합니다.cv2.moveWindow(window_name, x, y)
: 창을 지정한 좌표로 이동시킵니다.cv2.resizeWindow(window_name, width, height)
: 창의 크기를 지정한 너비와 높이로 조정합니다.cv2.destroyWindow(window_name)
: 지정한 창을 닫습니다.cv2.destroyAllWindows()
: 모든 창을 닫습니다.
- 키보드 및 마우스 이벤트 처리:
cv2.waitKey(delay)
: 키보드 입력을 대기합니다.delay
는 입력을 기다리는 시간(밀리초)을 지정합니다. 0일 경우, 사용자가 아무 키나 누를 때까지 기다립니다.cv2.getTrackbarPos(trackbar_name, window_name)
: 트랙바의 현재 위치 값을 가져옵니다.cv2.setMouseCallback(window_name, callback)
: 지정한 창에서 마우스 이벤트를 처리하기 위한 콜백 함수를 등록합니다.
- 비디오 디스플레이 및 제어:
cv2.VideoCapture(index or filename)
: 비디오 캡처 객체를 생성합니다.index
는 캡처 장치의 인덱스(0부터 시작)이거나 비디오 파일 이름을 지정할 수 있습니다.cv2.VideoWriter(filename, fourcc, fps, frameSize)
: 비디오 저장을 위한 객체를 생성합니다.filename
은 저장할 비디오 파일 이름을,fourcc
는 비디오 코덱을,fps
는 프레임 속도를,frameSize
는 프레임 크기를 지정합니다.cv2.CAP_PROP_FRAME_COUNT
: 비디오 파일의 총 프레임 수를 가져오는 속성입니다.cv2.CAP_PROP_POS_FRAMES
: 비디오 파일에서 현재 프레임 위치를 설정하거나 가져오는 속성입니다.cv2.CAP_PROP_FPS
: 비디오 파일의 프레임 속도를 가져오는 속성입니다.
- 트랙바:
cv2.createTrackbar(trackbar_name, window_name, initial_value, max_value, callback)
: 지정된 창에 트랙바를 생성합니다.trackbar_name
은 트랙바의 이름,window_name
은 트랙바가 속한 창의 이름,initial_value
는 초기 값,max_value
는 최대 값입니다. 이를 통해 사용자가 트랙바를 조작하여 값을 변경할 수 있습니다. 콜백 함수는 트랙바 값이 변경될 때 호출됩니다.
- 창 속성 설정:
cv2.setWindowProperty(window_name, prop_id, prop_value)
: 창의 속성을 설정합니다. 예를 들어,prop_id
에cv2.WINDOW_FULLSCREEN
을 전달하여 창을 전체 화면으로 설정할 수 있습니다.
- 마우스 콜백 함수:
cv2.setMouseCallback(window_name, callback)
: 지정한 창에서 마우스 이벤트를 처리하기 위한 콜백 함수를 등록합니다. 콜백 함수는 마우스 이벤트가 발생할 때 호출됩니다. 이를 통해 마우스 클릭, 이동, 버튼 누름 등의 이벤트를 감지하고 처리할 수 있습니다.
- 키보드 입력 제어:
cv2.waitKey(delay)
: 키보드 입력을 대기합니다.delay
는 입력을 기다리는 시간(밀리초)을 지정합니다. 특정 키 입력에 대한 조건문을 사용하여 키 이벤트를 처리할 수 있습니다.
- 위에서 언급한 기능은
open_highgui
의 주요 기능 중 일부에 불과하며, 더 많은 기능과 옵션이 있습니다. 이를 통해 사용자는 영상 및 비디오 데이터를 제어하고 디스플레이하는 고수준 GUI 기능을 쉽게 활용할 수 있습니다. - 추가적인 예제와 자세한 사용법은 OpenCV 공식 문서 및 예제 코드를 참조하시면 더 많은 정보를 얻을 수 있습니다.
참고 사이트
- OpenCV Library의 전반적인 설명은 여기 링크를 참고하시기 바랍니다.
- OpenCV Tutorial
https://docs.opencv.org/4.x/d9/df8/tutorial_root.html
- OpenCV 공식 홈페이지는 아래 링크에 있습니다.
Opencv 책이 필요하신 분들은 아래 링크를 참고바랍니다.
“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”