Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 OpenCV 모듈로 이미지 읽고 저장하는 방법

OpenCV 모듈에서는 cv2.imread() 함수를 사용하여 이미지를 불러올 수 있습니다. 이때 이미지 경로를 입력할 때 주의할 점이 있습니다. 이미지 파일이 현재 작업 디렉터리(working directory)에 있어야 하며, 그렇지 않은 경우에는 이미지의 전체 경로(full path)를 반드시 지정해 주어야 합니다.

cv2.imread() 함수는 두 번째 인자로 플래그(flag) 값을 받아 이미지를 어떤 방식으로 로드할지 결정합니다. 대표적인 플래그는 다음과 같습니다.

주요 imread 플래그

  • cv2.IMREAD_COLOR — 컬러 이미지를 로드하며, 이미지에 포함된 투명도(alpha) 정보는 무시됩니다. 별도의 플래그를 지정하지 않을 때 적용되는 기본값입니다.
  • cv2.IMREAD_GRAYSCALE — 이미지를 흑백(그레이스케일) 모드로 로드합니다.
  • cv2.IMREAD_UNCHANGED — 알파 채널을 포함하여 원본 이미지를 그대로 로드합니다.

원본 이미지

파이썬 OpenCV 모듈로 이미지 읽고 저장하는 방법

예제 코드

아래 예제는 이미지를 그레이스케일로 불러온 뒤 화면에 출력하고, 키보드 입력에 따라 다르게 동작하는 코드입니다.

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' 키를 누르면 변환된 그레이스케일 이미지가 지정한 경로에 저장됩니다.

파이썬 OpenCV 모듈로 이미지 읽고 저장하는 방법