[python] 이미지 처리를 위한 NumPy와의 연동 방법

NumPy는 파이썬에서 과학적 계산을 위한 핵심 라이브러리입니다. 이 라이브러리는 다차원 배열을 다루는 효과적인 방법을 제공하여 이미지 처리와 관련된 작업을 지원합니다. 이번 블로그 포스트에서는 NumPy와 이미지 처리를 위한 연동 방법에 대해서 알아보겠습니다.

이미지 읽기

먼저, 이미지를 읽어오는 방법부터 알아보겠습니다. NumPy는 이미지 파일을 다차원 배열로 읽어올 수 있습니다. 예를 들어, JPEG 파일을 읽어와 NumPy 배열로 변환하는 코드는 아래와 같습니다.

import numpy as np
from PIL import Image

# 이미지 파일을 열어서 PIL Image 객체로 변환합니다.
image = Image.open("image.jpg")

# PIL Image 객체를 NumPy 배열로 변환합니다.
numpy_image = np.array(image)

위의 예시 코드에서는 PIL 모듈의 Image 클래스를 사용하여 이미지 파일을 열고, 이를 NumPy 배열로 변환하고 있습니다.

이미지 처리

NumPy 배열로 이미지를 읽어오면 간단한 이미지 처리 작업을 수행할 수 있습니다. 예를 들어, 이미지의 크기를 변경하거나, 특정 픽셀의 값을 변경하는 등의 작업이 가능합니다. 아래는 이미지의 크기를 변경하는 예제 코드입니다.

import numpy as np
from PIL import Image

# 이미지 파일을 열어서 PIL Image 객체로 변환합니다.
image = Image.open("image.jpg")

# PIL Image 객체를 NumPy 배열로 변환합니다.
numpy_image = np.array(image)

# 이미지의 크기를 변경합니다.
resized_image = Image.fromarray(numpy_image).resize((new_width, new_height))

# 변경된 이미지를 저장합니다.
resized_image.save("resized_image.jpg")

위의 코드에서는 Image 클래스의 resize() 메서드를 사용하여 이미지의 크기를 변경하고, 이를 다시 이미지 파일로 저장하고 있습니다.

이미지 출력

NumPy 배열로 이미지를 읽어왔다면 이를 다시 이미지로 출력하는 것도 가능합니다. 예를 들어, 이미지 파일을 읽어오고, 이를 NumPy 배열로 변환한 뒤, 다시 이미지로 변환하여 출력할 수 있습니다. 아래는 이러한 예제 코드입니다.

import numpy as np
from PIL import Image

# 이미지 파일을 열어서 PIL Image 객체로 변환합니다.
image = Image.open("image.jpg")

# PIL Image 객체를 NumPy 배열로 변환합니다.
numpy_image = np.array(image)

# NumPy 배열을 다시 PIL Image 객체로 변환합니다.
new_image = Image.fromarray(numpy_image)

# 이미지를 출력합니다.
new_image.show()

위의 코드에서는 Image 클래스의 show() 메서드를 사용하여 이미지를 출력하고 있습니다.

마치며

이번 포스트에서는 NumPy와 이미지 처리의 연동 방법에 대해서 알아보았습니다. NumPy를 이용하면 이미지 파일을 다차원 배열로 읽어올 수 있고, 이를 통해 다양한 이미지 처리 작업을 수행할 수 있습니다. NumPy를 활용하여 보다 효율적인 이미지 처리를 할 수 있도록 노력해 보세요!

참고 자료