OpenCV로 불러온 이미지를 그레이스케일(회색조)로 변환한 뒤 Matplotlib을 이용해 화면에 표시하는 방법을 단계별로 알아보겠습니다.
구현 절차
- 먼저 figure.figsize와 figure.autolayout 설정으로 그림 크기를 지정하고, 서브플롯 주변 및 사이의 여백(padding)을 자동으로 조절합니다.
- cv2.imread() 함수는 지정된 경로의 이미지 파일을 불러와 배열 형태로 반환합니다.
- cv2.cvtColor() 함수는 입력 이미지의 색상 공간(color space)을 다른 색상 공간으로 변환해 줍니다. 여기서는 RGB 이미지를 그레이스케일로 변환합니다.
- plt.imshow() 함수는 데이터를 2D 래스터(raster) 형태의 이미지로 화면에 출력합니다. 이때
cmap="gray"옵션을 지정해야 회색조로 올바르게 표시됩니다. - 마지막으로 plt.show() 메서드를 호출하여 완성된 그림(figure)을 화면에 띄웁니다.
예제 코드
import cv2
from matplotlib import pyplot as plt
# 그림 크기 및 레이아웃 자동 조절 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 이미지 파일 불러오기
img = cv2.imread("baseball.png")
# RGB 이미지를 그레이스케일로 변환
image = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# 회색조 컬러맵으로 이미지 표시
plt.imshow(image, cmap="gray")
plt.show()실행 결과
위 코드를 실행하면 원본 컬러 이미지가 회색조로 변환되어 Matplotlib 창에 출력되는 것을 확인할 수 있습니다.
참고: OpenCV는 기본적으로 BGR 순서로 이미지를 읽어들이므로, 실제 프로젝트에서는 cv2.COLOR_BGR2GRAY를 사용하는 것이 더 일반적입니다. 또한 cmap="gray"를 생략하면 그레이스케일 데이터가 기본 컬러맵(viridis)으로 표시되어 색이 왜곡되어 보일 수 있으니 주의해야 합니다.
