NumPy 배열을 Python의 이미지로 저장

Manav Narula 2023년1월30일
  1. Image.fromarray()함수를 사용하여 NumPy 배열을 이미지로 저장
  2. imageio.imwrite()함수를 사용하여 NumPy 배열을 이미지로 저장
  3. matplotlib.pyplot.imsave()함수를 사용하여 NumPy 배열을 이미지로 저장
  4. cv2.imwrite()함수를 사용하여 NumPy 배열을 이미지로 저장
NumPy 배열을 Python의 이미지로 저장

Python에서 numpy 모듈은 배열 작업에 사용됩니다. Python에는 이미지를 읽고 저장할 수있는 많은 모듈이 있습니다.

이미지는 각 색상 코드와 함께 특정 위치에 저장된 서로 다른 픽셀의 배열로 생각할 수 있습니다. 따라서 배열을 이미지로 변환하고 저장해야하는 상황이 발생할 수 있습니다.

이 자습서에서는 numpy 배열을 이미지로 저장하는 방법에 대해 설명합니다.

Image.fromarray()함수를 사용하여 NumPy 배열을 이미지로 저장

fromarray()함수는 배열을 내보내는 객체에서 이미지 메모리를 만드는 데 사용됩니다. 그런 다음 필요한 경로와 파일 이름을 제공하여이 이미지 메모리를 원하는 위치에 저장할 수 있습니다.

예를 들면

import numpy as np
from PIL import Image

array = np.arange(0, 737280, 1, np.uint8)
array = np.reshape(array, (1024, 720))

im = Image.fromarray(array)
im.save("filename.jpeg")

먼저 RGB 색상 코드를 저장하는 배열을 만든 다음 내 보냅니다. 파일 이름에 원하는 이미지 형식을 지정할 수 있습니다. jpeg,png또는 기타 일반적으로 사용되는 이미지 형식이 될 수 있습니다. 이것은 아래에서 설명하는 모든 방법에 공통입니다.

imageio.imwrite()함수를 사용하여 NumPy 배열을 이미지로 저장

이전에 scipy 모듈에는 numpy 배열을 이미지로 저장하는imsave()함수가있었습니다. 그러나 최근 버전에서는 더 이상 사용되지 않으며image.io()imwrite()함수가이 작업을 수행하도록 권장되기 시작했으며 단순성 때문에 인기를 얻었습니다.

다음 코드는이 기능을 사용하는 방법을 보여줍니다.

import imageio
import numpy as np

array = np.arange(0, 737280, 1, np.uint8)
array = np.reshape(array, (1024, 720))

imageio.imwrite("filename.jpeg", array)

matplotlib.pyplot.imsave()함수를 사용하여 NumPy 배열을 이미지로 저장

matplotlib 모듈에는 이미지 작업에 사용할 수있는 다양한 기능이 있습니다.

imsave()함수는 배열을 이미지 파일로 저장할 수 있습니다.

예를 들면

import matplotlib.pyplot as plt
import numpy as np

array = np.arange(0, 737280, 1, np.uint8)
array = np.reshape(array, (1024, 720))

plt.imsave("filename.jpeg", array)

cv2.imwrite()함수를 사용하여 NumPy 배열을 이미지로 저장

OpenCV 모듈은 Python에서 이미지 처리에 자주 사용됩니다. 이 모듈의imwrite()함수는 numpy 배열을 이미지 파일로 내보낼 수 있습니다.

예를 들면

import cv2
import numpy as np

array = np.arange(0, 737280, 1, np.uint8)
array = np.reshape(array, (1024, 720))

cv2.imwrite("filename.jpeg", array)
작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn