기타

GrayScale변환 후 출력이 다르게 나오는 이유

criling 2021. 8. 11. 15:46

matplotlib.pyplot.imshow()로 GrayScale 이미지를 보면 초록색으로 뜨는 경우

원본
grayscale 후

Grayscale 변환은 제대로 완료된 것이 맞다. 출력을 제대로 안 하고 있었던 것이다.

Grayscale image는 단일 채널 이미지이다. 실제로 원본 이미지와 Grayscale 변환한 이미지의 shape은 다음과 같다.

예)

print(image.shape) #(722, 547, 3)

print(gray_image.shape) # (722, 547)

 

matplotlib.pyplot.imshow()에는 인자로 cmap(ColorMAP)이 있다.

단일 채널 이미지를 어느 색상 채널에 매핑하여 출력할지는 matplotlib.pyplot.imshow()의 마음이다.

따라서 이미지를 의도한대로 출력하기 위해서는 Colormap을 지정해주어야 한다.

인자로 cmap='gray'를 지정해주면 정상적으로 회색 이미지가 출력된다.

 

plt.imshow(gray_image, cmap='gray')

cmap='gray'

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

image = Image.open('./2d_images/vision.JPG')
gray_image=image.convert('L')
plt.axis('off')
plt.imshow(gray_image, cmap='gray')

 

출처 : https://driip.me/e51d6c89-8ab4-412f-8233-e8b09f0d62d4