>  기사  >  백엔드 개발  >  OpenCV Python을 사용하여 HSV 색상 팔레트 슬라이더를 만드는 방법은 무엇입니까?

OpenCV Python을 사용하여 HSV 색상 팔레트 슬라이더를 만드는 방법은 무엇입니까?

WBOY
WBOY앞으로
2023-08-18 13:53:041558검색

OpenCV에서 HSV(색조, 채도 및 명도) 색상 팔레트에 대한 슬라이더를 생성하기 위해 두 가지 다른 기능을 사용합니다. 이러한 함수는 cv2.reateTrackbar()cv2.getTrackbarPos()입니다.

  • 슬라이더 바를 생성하려면

    cv2.reateTrackbar() 함수를 사용하고, 선택한 슬라이더 위치의 값에 액세스하려면 cv2.getTrackbarPos() 함수를 사용하세요.

  • 이 두 가지 기능을 사용하여

    H, S, V 색상이 포함된 슬라이더와 선택한 색상을 표시하는 색상 창을 만듭니다. 슬라이더의 위치를 ​​변경하여 특정 색상 값을 선택할 수 있습니다.

  • H 범위는 0부터 179까지이고, SV 범위는 0부터 255까지입니다.

Syntax

cv2.createTrackbar(trackbar_name, window_name, default_value, max_value, callback_func)
cv2.getTrackbarPos(trackbar_name, window_name)

매개변수:

  • trackbar_name − 슬라이더의 이름입니다. 이 이름은 슬라이더의 위치 값에 액세스하는 데 사용됩니다.

  • window_name − 슬라이더에 붙어 있는 창의 이름입니다.

  • default_value − 슬라이더의 기본값을 설정합니다.

  • max_value − 슬라이더의 최대값입니다.

  • callback_func − 슬라이더 값이 변경될 때 실행되는 함수입니다.

단계

슬라이더를

HSV 색상 팔레트로 만들려면 다음 단계를 따르세요.

첫 번째 단계는 필수 라이브러리를 가져오는 것입니다. 필수 Python 라이브러리는

OpenCVNumPy입니다. 설치되어 있는지 확인하시기 바랍니다.

import cv2
import numpy as np

다음으로

콜백 함수를 정의하세요. 슬라이더 위치를 기본 매개변수로 사용합니다. 우리는 이 함수를 아무것도 하지 않도록 정의합니다.

def nothing(x):
   pass

검정색 이미지를 정의하고

HSV Color Palette라는 창을 만듭니다. 트랙 바와 색상이 이 창에 나타납니다.

img = np.zeros((300,650,3), np.uint8)
window_name = 'Trackbar Color Palette'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

5개 매개변수를 모두 전달하여 색상 변경 슬라이더를 만듭니다.

cv2.createTrackbar('H',window_name,0,179,nothing)
cv2.createTrackbar('S',window_name,0,255,nothing)
cv2.createTrackbar('V',window_name,0,255,nothing)

세 가지

HSV 색상 모두에 대한 현재 슬라이더 위치를 가져옵니다.

h = cv2.getTrackbarPos('H',window_name)
s = cv2.getTrackbarPos('S',window_name)
v = cv2.getTrackbarPos('V',window_name)

위 색상으로 컬러 이미지 창을 업데이트했습니다. 그리고 이미지 색상을

BGR으로 변환하세요.

img[:] = [h,s,v]
img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)

이제 컬러 이미지 창에 선택한 트랙바 값의 색상이 표시됩니다.

while(True):
   cv2.imshow(window_name,img)
   k = cv2.waitKey(1) & 0xFF
   if k == ord('q'):
      break

예제 1

이 Python 프로그램에서는 색상 팔레트로 창을 만듭니다. R, G, B 색상을 제어하기 위해 세 개의 슬라이더를 만들었습니다. 슬라이더를 밀면 색상 창에 해당 색상이 표시됩니다.

# import required libraries
import cv2
import numpy as np

def nothing(x):
   pass
   
# Create a black image, a window
img = np.zeros((300,650,3), np.uint8)
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
window_name = 'HSV Color Palette'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

# create trackbars for color change
cv2.createTrackbar('H',window_name,0,179,nothing)
cv2.createTrackbar('S',window_name,0,255,nothing)
cv2.createTrackbar('V',window_name,0,255,nothing)
while(True):
   cv2.imshow(window_name,img)
key = cv2.waitKey(1) & 0xFF
   if key == ord('q'):
      break
      
   # get current positions of four trackbars
   h = cv2.getTrackbarPos('H',window_name)
   s = cv2.getTrackbarPos('S',window_name)
   v = cv2.getTrackbarPos('V',window_name)
   img[:] = [h,s,v]
   img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
cv2.destroyAllWindows()

Output

위 프로그램을 실행하면 아래와 같은 출력창이 뜹니다. 출력창을 닫으려면 '

q' 버튼을 누르세요.

OpenCV Python을 사용하여 HSV 색상 팔레트 슬라이더를 만드는 방법은 무엇입니까?

기본적으로 세 개의 슬라이더 값은

0이며, 창 색상은 검은색입니다. 슬라이더를 밀면 색상 창에 해당 색상이 표시됩니다.

예제 2

의 중국어 번역은 다음과 같습니다.

예제 2

이 프로그램에서는

switch 버튼이 포함된 HSV 색상 팔레트로 창을 만듭니다. 우리는 4개의 슬라이더를 만들었습니다. 3개는 HSV Color용이고 1개는 Switch 버튼용입니다.

스위치 버튼 이 켜져 있으면 컬러 이미지의 색상만 표시됩니다. 슬라이더를 밀면 색상 창에 해당 색상이 표시됩니다.

import cv2
import numpy as np

def nothing(x):
   pass
   
# Create a black image, a window
img = np.zeros((300,650,3), np.uint8)
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
window_name = 'HSV Color Palette'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

# create trackbars for color change
cv2.createTrackbar('H',window_name,0,179,nothing)
cv2.createTrackbar('S',window_name,0,255,nothing)
cv2.createTrackbar('V',window_name,0,255,nothing)

# create switch for ON/OFF functionality
# switch = '0 : OFF \n1 : ON'
cv2.createTrackbar('switch', window_name,0,1,nothing)
while(True):
   cv2.imshow(window_name,img)
   key = cv2.waitKey(1) & 0xFF
   if key == ord('q'):
      break
      
   # get current positions of four trackbars
   h = cv2.getTrackbarPos('H',window_name)
   s = cv2.getTrackbarPos('S',window_name)
   v = cv2.getTrackbarPos('V',window_name)
   sw = cv2.getTrackbarPos('switch',window_name)
   if sw == 0:
      img[:] = 0
   else:
      img[:] = [h,s,v]
      img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
cv2.destroyAllWindows()

Output

위 프로그램을 실행하면 아래와 같은 출력창이 뜹니다. 출력창을 닫으려면 '

q' 버튼을 누르세요.

OpenCV Python을 사용하여 HSV 색상 팔레트 슬라이더를 만드는 방법은 무엇입니까?

기본적으로 모든 슬라이더의 값은

0입니다. 창문의 색상은 검정색입니다. 스위치를 켜고(1로 선택) HSV 색상 슬라이더를 원하는 값으로 슬라이드하면 창의 색상이 설정된 값에 해당합니다. 밝은 색상의 경우 SV 슬라이더의 최대값을 선택하고 H 슬라이더를 밉니다.

스위치가 꺼진 상태에서는 슬라이더를 밀어도 아무런 변화가 없습니다.

스위치가 꺼진 상태(0으로 설정)에서 슬라이더를 밀어도 창 색상은 변하지 않습니다. 그대로 유지됩니다(예: 검은색).

위 내용은 OpenCV Python을 사용하여 HSV 색상 팔레트 슬라이더를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제