Python에서 OpenCV를 사용하는 HSV 색 공간
프로그래밍에서 이미지를 처리할 때 숫자 값이 있는 변수로 변환하고 해당 값에 대해 작업합니다. 모든 이미지는 원하는 색상을 가질 수 있습니다.
색상 모델을 사용하여 이러한 색상을 숫자 값에 매핑합니다. 일부 일반적인 색상 모델은 RGB, CMYK, HSV 등입니다.
opencv
라이브러리를 사용하여 Python에서 이미지와 비디오를 처리하고 작업할 수 있습니다. 이 라이브러리는 이미지에 대한 복잡한 알고리즘과 기술을 구현할 수 있는 기능으로 가득합니다.
이 튜토리얼에서는 opencv
라이브러리의 HSV 색상 공간에 대해 설명합니다.
HSV 색 공간
기본적으로 RGB 색상 모델은 이미지의 색상을 나타냅니다. RGB는 그래픽에서 가장 일반적으로 사용되는 색상 모델이며 광범위한 색상 스펙트럼을 나타낼 수 있기 때문입니다.
그러나 가장 유용한 모델 중 하나는 HSV 모델입니다.
HSV 모델은 RGB 모델의 색상 범위를 원통형으로 표현하는 데 사용됩니다. 이 색 공간은 개체 추적에 많이 사용됩니다.
HSV 색상 모델은 Hue
, Saturation
및 Brightness
(Value
)를 나타냅니다.
Hue
속성은 사용되는 색상의 색조를 지정하는 데 사용되며 Saturation
속성은 색상이 사용되는 양을 결정합니다. Value
속성은 색상의 밝기를 지정하는 데 사용됩니다.
OpenCV에서 이미지를 HSV 색 공간으로 변환
opencv
라이브러리를 사용하여 이미지를 한 색상 공간에서 다른 색상 공간으로 변환할 수 있습니다. 이를 위해 cvtColor()
함수를 사용합니다.
imread()
함수를 사용하여 이미지를 읽을 때 RGB 색상 공간에 있습니다. cvtColor()
함수를 사용하여 이것을 HSV로 변환할 수 있습니다.
다음 예를 참조하십시오.
import cv2
i = cv2.imread("deftstack.png")
img = cv2.cvtColor(i, cv2.COLOR_BGR2HSV)
cv2.imshow("Final", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
출력:
위의 예에서 cvtColor()
함수에 지정된 cv2.BGR2HSV
속성에 유의하십시오. RGB 색상 공간에서 HSV로 이미지를 변환하도록 지정합니다.
waitKey()
및 destroyAllWindows()
함수의 조합은 출력 창을 닫기 전에 사용자가 일부 키를 누를 때까지 기다리는 데 사용됩니다.
cv2.BGR2HSV
는 H
범위가 0에서 180인 RGB에서 HSV로 이미지를 변환합니다. cv2.BR2HSV_FULL
을 사용하여 H
범위가 0에서 255인 HSV로 이미지를 변환할 수도 있습니다. .
OpenCV에서 HSV 색상 공간을 사용하여 색상 감지
논의한 바와 같이 이 색 공간의 주요 용도는 객체 추적입니다. 이 모델을 사용하여 이미지의 특정 색상을 매핑할 수 있는 마스크를 만들 수 있습니다.
HSV 모델의 모든 색상에는 일부 색상 범위가 있습니다. 범위의 상한 및 하한을 사용하여 색상을 감지할 수 있습니다.
inRange()
함수를 사용하여 HSV 색상 공간의 상한 및 하한을 사용하여 주어진 색상을 감지하는 이진 마스크를 반환할 수 있습니다.
아래 코드를 참조하십시오.
import cv2
import numpy as np
img = cv2.imread("img3.jpeg")
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
bound_lower = np.array([25, 20, 20])
bound_upper = np.array([100, 255, 255])
mask_green = cv2.inRange(hsv_img, bound_lower, bound_upper)
cv2.imshow("Mask", mask_green)
cv2.waitKey(0)
cv2.destroyAllWindows()
출력:
위의 예에서는 이미지의 녹색을 감지하는 바이너리 마스크를 만듭니다. 이미지는 HSV 색 공간으로 변환되고 녹색의 범위가 정의됩니다.
inRange
함수로 상한과 하한을 사용하여 색상을 감지하고 마스크를 반환합니다.
이 마스크를 이미지에 매핑하여 색상을 감지하고 주어진 색상의 경계를 그릴 수 있습니다.
결론
이 튜토리얼에서는 색상 공간에 대해 논의하고 opencv
의 HSV 색상 공간에 초점을 맞췄습니다.
HSV 색상 공간의 기본 사항과 이 모델에서 색상이 매핑되는 방식에 대해 논의하는 것으로 시작했습니다. 일반적으로 사용되는 RGB 모델과의 차이점도 강조되었습니다.
또한 opencv
를 사용하여 이미지를 HSV로 변환하는 방법도 시연했습니다.
HSV 색 공간은 객체 추적에도 사용됩니다. 우리는 opencv
라이브러리의 inRange
함수로 주어진 색상의 상한과 하한을 사용하여 주어진 이미지에서 색상을 감지하는 데 사용하는 방법을 논의했습니다.
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