如何使用OpenCV Python建立RGB顏色調色盤軌道條?


OpenCV中,可以使用cv2.createTrackbar()函式建立軌道條。要訪問所選軌道條位置的值,我們使用cv2.getTrackbarPos()函式。

使用這兩個函式,我們建立一個包含R、G、B顏色軌道條和一個顯示所選顏色的顏色視窗的視窗。透過更改軌道條的位置,RGB顏色在0255之間變化。請參見下面兩個函式的語法。

語法

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 − 當軌道條值更改時執行的函式。

步驟

要建立作為RGB顏色調色盤的軌道條,可以按照以下步驟操作:

第一步是匯入所需的庫。所需的Python庫是OpenCVNumPy。確保您已經安裝了它們。

import cv2
import numpy as np

接下來,定義一個回撥函式。它以軌道條位置作為預設引數。我們定義此函式什麼也不做。

def nothing(x):
   pass

定義黑色影像並建立一個名為Trackbar Color Palette的視窗。軌道條和顏色將在此視窗中顯示。

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

建立用於顏色更改的軌道條,傳遞所有五個引數。軌道條值範圍在0到255之間。

cv2.createTrackbar('R',window_name,0,255,nothing)
cv2.createTrackbar('G',window_name,0,255,nothing)
cv2.createTrackbar('B',window_name,0,255,nothing)

獲取所有三個RGB顏色的當前軌道條位置。

r = cv2.getTrackbarPos('R',window_name)
g = cv2.getTrackbarPos('G',window_name)
b = cv2.getTrackbarPos('B',window_name)

更新上述顏色的顏色影像視窗。

img[:] = [b,g,r]

現在在顏色視窗中顯示所選軌道條值的顏色。

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, and the window img = np.zeros((300,650,3), np.uint8) window_name = 'Trackbar Color Palette' cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE) # create trackbars for color change cv2.createTrackbar('R',window_name,0,255,nothing) cv2.createTrackbar('G',window_name,0,255,nothing) cv2.createTrackbar('B',window_name,0,255,nothing) while(True): cv2.imshow(window_name,img) k = cv2.waitKey(1) & 0xFF if k == ord('q'): break # get current positions of four trackbars r = cv2.getTrackbarPos('R',window_name) g = cv2.getTrackbarPos('G',window_name) b = cv2.getTrackbarPos('B',window_name) img[:] = [b,g,r] cv2.destroyAllWindows()

輸出

執行上述程式後,您將獲得以下輸出視窗。要關閉輸出視窗,請按“q”鍵。

所有三個軌道條的預設值為零,視窗顏色為黑色。滑動軌道條,您將在顏色視窗中看到相應的顏色。

示例2

在這個程式中,我們建立一個帶有開關按鈕的顏色調色盤視窗。

我們建立了四個軌道條,三個用於R、G、B顏色,一個用於開關按鈕。

開關按鈕開啟時,顏色視窗中才會顯示顏色。滑動軌道條,您將在顏色視窗中看到相應的顏色。

import cv2 import numpy as np def nothing(x): pass # Create a black image, a window img = np.zeros((300,650,3), np.uint8) window_name = 'Trackbar Color Palette' cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE) # create trackbars for color change cv2.createTrackbar('R',window_name,0,255,nothing) cv2.createTrackbar('G',window_name,0,255,nothing) cv2.createTrackbar('B',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 r = cv2.getTrackbarPos('R',window_name) g = cv2.getTrackbarPos('G',window_name) b = cv2.getTrackbarPos('B',window_name) s = cv2.getTrackbarPos("switch",window_name) if s == 0: img[:] = 0 else: img[:] = [b,g,r] cv2.destroyAllWindows()

輸出

執行上述程式後,它將顯示以下輸出視窗。要關閉輸出視窗,請按“q”鍵。

所有軌道條的預設值為0。視窗顏色為黑色。當您開啟開關(選擇為1)並將RGB顏色軌道條滑動到所需的值時,顏色視窗將顯示相應的顏色。

如果開關關閉(設定為0)時滑動軌道條,則視窗顏色不會改變。它將保持原樣(即黑色)。

更新於:2022年9月27日

1K+ 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始學習
廣告