Python에서 NumPy 배열을 PIL 이미지로 변환

Suraj Joshi 2023년1월30일
  1. Python에서 NumPy 배열을 PIL 이미지로 변환
  2. Matplotlib 컬러 맵을 사용하여 NumPy 배열을 PIL 이미지 Python으로 변환
Python에서 NumPy 배열을 PIL 이미지로 변환

이 튜토리얼에서는PIL 패키지의Image.fromarray()를 사용하여 NumPy 배열을PIL 이미지로 변환하는 방법을 설명합니다. Python Imaging Library (PIL)는 다양한 이미지 처리 기능을 갖춘 Python 라이브러리입니다.

Image.fromarray()함수는 배열 객체를 입력으로 받아 배열 객체에서 만든 이미지 객체를 반환합니다.

Python에서 NumPy 배열을 PIL 이미지로 변환

import numpy as np
from PIL import Image

image = Image.open("lena.png")
np_array = np.array(image)

pil_image = Image.fromarray(np_array)
pil_image.show()

출력:

NumPy 배열을 PIL 이미지 Python으로 변환

Image에서open()메소드를 사용하여 현재 작업 디렉토리의lena.png 이미지를 읽고 이미지 객체를 반환합니다.

그런 다음numpy.array()메서드를 사용하여이 이미지 객체를 NumPy 배열로 변환합니다.

Image.fromarray()함수를 사용하여 배열을PIL 이미지 객체로 다시 변환하고 마지막으로show()메서드를 사용하여 이미지 객체를 표시합니다.

import numpy as np
from PIL import Image

array = np.random.randint(255, size=(400, 400), dtype=np.uint8)
image = Image.fromarray(array)
image.show()

출력:

자체 생성 된 NumPy 배열을 PIL 이미지 Python으로 변환

여기서는 0에서 255까지의 난수로 크기가 400x400인 NumPy 배열을 만든 다음 Image.fromarray()함수를 사용하여 배열을 Image객체로 변환하고 ‘이미지’를 표시합니다.show()메서드를 사용합니다.

Matplotlib 컬러 맵을 사용하여 NumPy 배열을 PIL 이미지 Python으로 변환

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

image_array = plt.imread("lena.jpg")
image_array = image_array / 255
image = Image.fromarray(np.uint8(cm.plasma(image_array) * 255))
image.show()

출력:

Matplotlib 컬러 맵을 적용하여 NumPy 배열을 PIL 이미지 Python으로 변환

Matplotlib패키지의 플라즈마컬러 맵을 적용합니다. 이미지에 컬러 맵을 적용하려면 먼저 최대 값이 1인 배열을 정규화합니다. 위의 예에서image_array에있는 요소의 최대 값은255입니다. 따라서 정규화를 위해image_array를 255로 나눕니다.

그런 다음image_array에 컬러 맵을 적용하고255를 다시 곱합니다. 그런 다음np.uint8()메서드를 사용하여 요소를int 형식으로 변환합니다. 마지막으로Image.fromarray()함수를 사용하여 배열을 이미지로 변환합니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Matplotlib Images