파이썬의 OpenCV 라이브러리를 사용하면 몇 줄의 코드만으로 이미지를 손쉽게 불러오고 화면에 표시할 수 있습니다. 이 글에서는 OpenCV로 이미지를 읽는 기본 과정을 단계별로 살펴보고, 각 함수가 어떤 역할을 하는지 자세히 설명합니다.
이미지 읽기 기본 4단계
- 파일에서 이미지 불러오기 –
cv2.imread()함수를 사용해 디스크에 저장된 이미지를 메모리로 로드합니다. - 지정한 창에 이미지 표시하기 –
cv2.imshow()함수로 특정 이름의 윈도우에 이미지를 띄웁니다. - 키 입력 대기하기 –
cv2.waitKey()함수를 호출해 사용자가 키를 누를 때까지 프로그램을 대기 상태로 유지합니다. - 모든 HighGUI 창 닫기 –
cv2.destroyAllWindows()함수로 열려 있는 모든 창을 정리하고 리소스를 해제합니다.
예제 코드
import cv2
img = cv2.imread("baseball.png", cv2.IMREAD_COLOR)
cv2.imshow("baseball", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
코드 상세 설명
1. cv2.imread() – 이미지 로드
cv2.imread()는 첫 번째 인자로 이미지 파일 경로를, 두 번째 인자로 읽기 모드(flag)를 받습니다. 위 예제에서 사용된 cv2.IMREAD_COLOR는 이미지를 컬러(BGR 3채널)로 불러오는 옵션입니다.
자주 사용되는 주요 플래그는 다음과 같습니다.
cv2.IMREAD_COLOR: 컬러 이미지로 읽기 (기본값)cv2.IMREAD_GRAYSCALE: 흑백(그레이스케일) 이미지로 읽기cv2.IMREAD_UNCHANGED: 알파 채널을 포함해 원본 그대로 읽기
2. cv2.imshow() – 이미지 출력
cv2.imshow()는 첫 번째 인자로 창의 제목(문자열), 두 번째 인자로 표시할 이미지 배열을 받습니다. 같은 이름의 창이 이미 존재하면 해당 창에 이미지를 다시 그립니다.
3. cv2.waitKey() – 키 입력 대기
cv2.waitKey(0)은 사용자가 아무 키나 누를 때까지 무한정 대기합니다. 인자에 밀리초 단위 숫자를 넣으면 해당 시간 동안만 대기한 후 다음 코드로 넘어갑니다. 이 함수가 없으면 창이 순간적으로 나타났다 바로 사라지므로 반드시 함께 사용해야 합니다.
4. cv2.destroyAllWindows() – 창 정리
프로그램 종료 전에 cv2.destroyAllWindows()를 호출하면 OpenCV가 생성한 모든 GUI 창을 닫고 관련 메모리를 깨끗하게 해제합니다.
실행 결과
위 코드를 실행하면 "baseball"이라는 제목의 창이 열리고, 지정한 이미지가 화면에 표시됩니다. 아무 키나 누르면 창이 닫히며 프로그램이 종료됩니다.

마무리
OpenCV의 이미지 읽기는 imread → imshow → waitKey → destroyAllWindows의 네 가지 기본 흐름으로 구성됩니다. 이 패턴은 영상 처리, 객체 인식 등 모든 컴퓨터 비전 프로젝트의 출발점이 되므로 꼭 익혀두시기 바랍니다.