[python] 이미지 픽셀 처리하기

이미지 픽셀 처리는 이미지를 구성하는 픽셀 단위로 작업을 수행하는 기술입니다. 파이썬을 사용하여 이미지의 픽셀에 접근하고 수정하는 방법에 대해 알아보겠습니다.

이미지 로딩

먼저, 이미지를 로딩하는 방법부터 알아보겠습니다. 파이썬의 PIL (Python Imaging Library) 모듈을 사용하여 이미지를 로딩할 수 있습니다.

from PIL import Image

image = Image.open("image.png")

이미지 파일은 open() 함수를 사용하여 열 수 있습니다. 이때, 파일 경로를 인자로 전달합니다.

픽셀에 접근하기

이미지를 로딩한 후에는 픽셀에 접근하여 원하는 작업을 수행할 수 있습니다. Image 객체의 getpixel() 메서드를 사용하여 해당 위치의 픽셀 값을 가져올 수 있습니다.

pixel_value = image.getpixel((x, y))

위의 예시에서 (x, y)는 픽셀의 좌표를 나타내는 튜플입니다. 해당 좌표의 픽셀 값을 가져올 수 있습니다.

픽셀 값 수정하기

픽셀 값을 수정하는 방법은 Image 객체의 putpixel() 메서드를 사용하는 것입니다.

image.putpixel((x, y), new_pixel_value)

위의 예시에서 (x, y)는 수정하고자 하는 픽셀의 좌표를 나타내는 튜플입니다. new_pixel_value는 수정하고자 하는 픽셀의 새로운 값을 나타냅니다.

이미지 저장하기

픽셀 값을 수정한 후에는 변경된 이미지를 저장할 수 있습니다. Image 객체의 save() 메서드를 사용하여 이미지를 저장합니다.

image.save("modified_image.png")

위의 예시에서 "modified_image.png"은 저장할 이미지 파일의 경로와 파일 이름을 나타냅니다.

예제 코드

아래는 이미지 픽셀 처리를 위한 예제 코드입니다. 이미지 파일을 열고, 모든 픽셀 값을 반전시킨 다음, 변경된 이미지를 저장하는 기능을 수행합니다.

from PIL import Image

def invert_image(image_path):
    # 이미지 로딩
    image = Image.open(image_path)

    # 이미지 크기 확인
    width, height = image.size

    # 모든 픽셀 값 반전
    for y in range(height):
        for x in range(width):
            r, g, b = image.getpixel((x, y))
            inverted_pixel = (255 - r, 255 - g, 255 - b)
            image.putpixel((x, y), inverted_pixel)

    # 변경된 이미지 저장
    image.save("inverted_image.png")

# 예제 실행
invert_image("image.png")

위의 예제 코드를 실행하면 image.png 파일이 역색이 반전된 inverted_image.png 파일로 저장됩니다.

결론

위의 예제 코드를 통해 이미지 픽셀 처리를 수행하는 방법을 알아보았습니다. 이미지 픽셀 처리는 이미지 처리와 컴퓨터 비전 분야에서 많이 사용되는 기술이므로 응용할 수 있는 다양한 기능을 개발할 수 있습니다.

참고 자료