OpenCV 모듈에서는 cv2.imread() 함수를 사용하여 이미지를 불러올 수 있습니다. 이때 이미지 경로를 입력할 때 주의할 점이 있습니다. 이미지 파일이 현재 작업 디렉터리(working directory)에 있어야 하며, 그렇지 않은 경우에는 이미지의 전체 경로(full path)를 반드시 지정해 주어야 합니다.
cv2.imread() 함수는 두 번째 인자로 플래그(flag) 값을 받아 이미지를 어떤 방식으로 로드할지 결정합니다. 대표적인 플래그는 다음과 같습니다.
주요 imread 플래그
- cv2.IMREAD_COLOR — 컬러 이미지를 로드하며, 이미지에 포함된 투명도(alpha) 정보는 무시됩니다. 별도의 플래그를 지정하지 않을 때 적용되는 기본값입니다.
- cv2.IMREAD_GRAYSCALE — 이미지를 흑백(그레이스케일) 모드로 로드합니다.
- cv2.IMREAD_UNCHANGED — 알파 채널을 포함하여 원본 이미지를 그대로 로드합니다.
원본 이미지

예제 코드
아래 예제는 이미지를 그레이스케일로 불러온 뒤 화면에 출력하고, 키보드 입력에 따라 다르게 동작하는 코드입니다.
import numpy as np
import cv2
# 두 번째 인자 0은 cv2.IMREAD_GRAYSCALE과 동일
my_img = cv2.imread('C:/Users/TP/Desktop/poor/poverty_india.jpg', 0)
cv2.imshow('image', my_img)
k = cv2.waitKey(0) & 0xFF
# ESC 키를 누르면 창을 닫고 종료
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
# 's' 키를 누르면 그레이스케일 이미지를 새 파일로 저장
cv2.imwrite('C:/Users/TP/Desktop/poor/poverty_india_gray.jpg', my_img)
cv2.destroyAllWindows()
다음은 matplotlib를 함께 활용한 또 다른 예제입니다. 플래그를 직접 명시하여 가독성을 높였습니다.
import cv2
import numpy as np
import matplotlib.pyplot as plt
my_img = cv2.imread('C:/Users/TP/Desktop/poor/poverty_india.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('image', my_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
참고: 위 두 번째 예제의 마지막 줄은 cv2.destoryAllWindows()로 잘못 작성된 경우가 많습니다. 올바른 함수명은 destroyAllWindows이므로 실제 코딩 시 오타에 유의해야 합니다.
실행 결과
코드를 실행하면 컬러 이미지가 흑백으로 변환되어 창에 표시됩니다. ESC 키를 누르면 프로그램이 종료되고, 's' 키를 누르면 변환된 그레이스케일 이미지가 지정한 경로에 저장됩니다.
