如何使用OpenCV Python建立RGB顏色調色盤軌道條?
在OpenCV中,可以使用cv2.createTrackbar()函式建立軌道條。要訪問所選軌道條位置的值,我們使用cv2.getTrackbarPos()函式。
使用這兩個函式,我們建立一個包含R、G、B顏色軌道條和一個顯示所選顏色的顏色視窗的視窗。透過更改軌道條的位置,RGB顏色在0和255之間變化。請參見下面兩個函式的語法。
語法
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庫是OpenCV和NumPy。確保您已經安裝了它們。
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)時滑動軌道條,則視窗顏色不會改變。它將保持原樣(即黑色)。