[python] Pillow으로 이미지에서 특정 색상을 추출하는 방법

이미지에서 특정한 색상을 추출하고 싶을 때, Python의 Pillow 라이브러리를 사용할 수 있습니다. Pillow는 이미지 프로세싱을 위한 강력한 도구로, 다양한 작업을 할 수 있습니다. 이번에는 Pillow를 사용하여 이미지에서 특정 색상을 추출하는 방법에 대해 알아보겠습니다.

Pillow 설치

먼저, Pillow를 설치해야 합니다. 다음 명령어를 사용하여 Pillow를 설치할 수 있습니다.

pip install pillow

이미지 열기

Pillow를 사용하여 이미지를 열기 위해서는 Image 모듈을 import 해야 합니다. 다음 코드를 사용하여 이미지를 열어봅시다.

from PIL import Image

image = Image.open("image.jpg")    # 이미지 파일 경로를 적절히 수정해주세요.

이미지에서 특정 색상 추출

Pillow의 Image 모듈은 이미지 객체를 다루는 다양한 함수를 제공합니다. 이미지에서 특정 색상을 추출하려면 다음과 같은 절차를 따를 수 있습니다.

  1. 이미지를 RGB 모드로 변환합니다.
  2. 픽셀을 스캔하면서 특정 색상과 비교합니다.
  3. 일치하는 색상을 추출합니다.

다음은 예시 코드입니다.

def extract_color(image, target_color):
    """이미지에서 특정 색상을 추출하는 함수"""
    extracted_pixels = []

    # 이미지를 RGB 모드로 변환
    image = image.convert("RGB")

    # 이미지의 픽셀을 스캔하면서 특정 색상과 비교
    width, height = image.size
    for y in range(height):
        for x in range(width):
            pixel = image.getpixel((x, y))
            if pixel == target_color:
                extracted_pixels.append((x, y))

    return extracted_pixels

target_color = (255, 0, 0)    # 추출하고 싶은 색상 (여기서는 빨간색)
result = extract_color(image, target_color)
print(result)

위의 코드에서는 이미지를 RGB 모드로 변환한 후, 픽셀을 스캔하여 특정 색상과 일치하는지 확인합니다. 일치하는 색상의 픽셀 좌표를 extracted_pixels 리스트에 저장하여 반환합니다.

결과 확인

추출한 색상의 픽셀 좌표를 얻었다면, 필요한 작업을 수행할 수 있습니다. 예를 들어, 추출한 색상의 픽셀을 다른 색상으로 변경하거나, 해당 좌표에 사각형이나 원을 그려서 시각화할 수 있습니다.

추출한 색상의 픽셀 좌표를 사용하여 원을 그리는 예시 코드는 다음과 같습니다.

from PIL import ImageDraw

draw = ImageDraw.Draw(image)
for (x, y) in result:
    draw.ellipse([(x-5, y-5), (x+5, y+5)], outline="red")    # 추출한 색상의 픽셀 주변에 원을 그립니다.

image.show()

이제 추출한 색상의 픽셀 주변에 원이 그려진 이미지가 표시될 것입니다.

Pillow를 사용하여 이미지에서 특정 색상을 추출하는 방법을 알아보았습니다. Pillow의 다양한 기능을 활용하면 다양한 이미지 처리 작업을 할 수 있습니다. 문서를 참고하여 Pillow의 다른 기능도 살펴보시기 바랍니다.

참고 문서