[python] OpenCV를 사용하여 이미지에서 특정 색상 분리하기

OpenCV는 이미지 처리와 컴퓨터 비전에 널리 사용되는 라이브러리입니다. 이번 포스트에서는 OpenCV를 사용하여 이미지에서 특정 색상을 분리하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치하기

먼저, OpenCV를 설치해야 합니다. 아래의 명령어를 사용하여 OpenCV를 설치할 수 있습니다.

pip install opencv-python

이미지 로드하기

분리할 색상이 있는 이미지를 불러와야 합니다. 다음 예제 코드는 OpenCV를 사용하여 이미지를 로드하는 방법을 보여줍니다.

import cv2

image = cv2.imread('image.jpg')

색상 공간 변환하기

OpenCV에서는 이미지를 BGR 색상 공간으로 처리합니다. 따라서, 원하는 색상을 분리하려면 먼저 이미지를 다른 색상 공간으로 변환해야 합니다. 대부분의 경우, HSV 색상 공간이 많이 사용됩니다. 아래 예제 코드는 BGR을 HSV 색상 공간으로 변환하는 방법을 보여줍니다.

hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

색상 분리하기

이제 변환된 이미지에서 특정 색상을 분리할 수 있습니다. 색상은 범위로 지정할 수 있으며, 파이썬에서는 범위를 나타낼 때 (하한, 상한) 형태의 튜플로 표현합니다. 아래 예제 코드는 HSV 이미지에서 녹색을 분리하는 방법을 보여줍니다.

lower_green = (40, 50, 50)
upper_green = (80, 255, 255)

mask = cv2.inRange(hsv_image, lower_green, upper_green)
result = cv2.bitwise_and(image, image, mask=mask)

위의 코드에서 lower_greenupper_green은 녹색 범위를 지정하는 값입니다. inRange 함수를 사용하여 이 범위 내의 모든 픽셀을 흰색으로 반환합니다. bitwise_and 함수를 사용하여 원본 이미지에서 해당 색상만 추출합니다.

결과 확인하기

마지막으로, 분리된 색상을 확인하기 위해 결과 이미지를 출력해 봅시다.

cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

위의 코드는 결과 이미지를 윈도우에 표시합니다. waitKey 함수는 사용자의 키 입력을 기다리는 역할을 합니다.

결론

이번 포스트에서는 OpenCV를 사용하여 이미지에서 특정 색상을 분리하는 방법에 대해 알아보았습니다. OpenCV는 강력한 이미지 처리 라이브러리로 다양한 이미지 처리 작업에도 사용될 수 있습니다. 자세한 내용은 OpenCV 공식 문서를 참조하시기 바랍니다.

참고 자료