在OpenCV中,可以使用 cv2.reateTrackbar()函數建立軌跡列。要存取所選軌跡欄位置的值,我們使用 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
在下面的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”按鈕。
#所有三個軌跡欄的預設值都是零,視窗的顏色為黑色。滑動滑動條即可在顏色視窗中看到相應的顏色。
在此程式中,我們建立一個視窗作為帶有切換按鈕的調色板。
我們創建了四個軌跡欄,三個用於 R、G、B 顏色,一個用於切換按鈕。
當開關按鈕為ON時,則僅顯示顏色視窗中的顏色。滑動滑動條,顏色視窗中就會顯示相應的顏色。
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)時滑動滑動條,則視窗的顏色不會改變。它將保持原樣(即黑色)。
以上是如何使用OpenCV Python建立一個RGB顏色調色盤的滑動條?的詳細內容。更多資訊請關注PHP中文網其他相關文章!