Python에서 OpenCV를 사용하는 HSV 색 공간

Manav Narula 2023년1월30일
  1. HSV 색 공간
  2. OpenCV에서 이미지를 HSV 색 공간으로 변환
  3. OpenCV에서 HSV 색상 공간을 사용하여 색상 감지
  4. 결론
Python에서 OpenCV를 사용하는 HSV 색 공간

프로그래밍에서 이미지를 처리할 때 숫자 값이 있는 변수로 변환하고 해당 값에 대해 작업합니다. 모든 이미지는 원하는 색상을 가질 수 있습니다.

색상 모델을 사용하여 이러한 색상을 숫자 값에 매핑합니다. 일부 일반적인 색상 모델은 RGB, CMYK, HSV 등입니다.

opencv 라이브러리를 사용하여 Python에서 이미지와 비디오를 처리하고 작업할 수 있습니다. 이 라이브러리는 이미지에 대한 복잡한 알고리즘과 기술을 구현할 수 있는 기능으로 가득합니다.

이 튜토리얼에서는 opencv 라이브러리의 HSV 색상 공간에 대해 설명합니다.

HSV 색 공간

기본적으로 RGB 색상 모델은 이미지의 색상을 나타냅니다. RGB는 그래픽에서 가장 일반적으로 사용되는 색상 모델이며 광범위한 색상 스펙트럼을 나타낼 수 있기 때문입니다.

그러나 가장 유용한 모델 중 하나는 HSV 모델입니다.

HSV 모델은 RGB 모델의 색상 범위를 원통형으로 표현하는 데 사용됩니다. 이 색 공간은 개체 추적에 많이 사용됩니다.

HSV 색상 모델은 Hue, SaturationBrightness(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 함수를 사용하여 이미지를 RGB에서 HSV로 변환

위의 예에서 cvtColor() 함수에 지정된 cv2.BGR2HSV 속성에 유의하십시오. RGB 색상 공간에서 HSV로 이미지를 변환하도록 지정합니다.

waitKey()destroyAllWindows() 함수의 조합은 출력 창을 닫기 전에 사용자가 일부 키를 누를 때까지 기다리는 데 사용됩니다.

cv2.BGR2HSVH 범위가 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()

출력:

inRange 함수로 HSV 범위를 사용하여 색상 찾기

위의 예에서는 이미지의 녹색을 감지하는 바이너리 마스크를 만듭니다. 이미지는 HSV 색 공간으로 변환되고 녹색의 범위가 정의됩니다.

inRange 함수로 상한과 하한을 사용하여 색상을 감지하고 마스크를 반환합니다.

이 마스크를 이미지에 매핑하여 색상을 감지하고 주어진 색상의 경계를 그릴 수 있습니다.

결론

이 튜토리얼에서는 색상 공간에 대해 논의하고 opencv의 HSV 색상 공간에 초점을 맞췄습니다.

HSV 색상 공간의 기본 사항과 이 모델에서 색상이 매핑되는 방식에 대해 논의하는 것으로 시작했습니다. 일반적으로 사용되는 RGB 모델과의 차이점도 강조되었습니다.

또한 opencv를 사용하여 이미지를 HSV로 변환하는 방법도 시연했습니다.

HSV 색 공간은 객체 추적에도 사용됩니다. 우리는 opencv 라이브러리의 inRange 함수로 주어진 색상의 상한과 하한을 사용하여 주어진 이미지에서 색상을 감지하는 데 사용하는 방법을 논의했습니다.

작가: Manav Narula
Manav Narula avatar Manav Narula avatar

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

관련 문장 - Python OpenCV