要在OpenCV中建立HSV(色調、飽和度和值)色彩調色盤的滑動條,我們使用兩個不同的函數。這些函數是cv2.reateTrackbar()和cv2.getTrackbarPos()。
使用cv2.reateTrackbar()函數建立滑動條,而cv2.getTrackbarPos()函數用於存取所選滑動條位置的值。
使用這兩個函數,我們建立一個包含 H、S、V 顏色的滑動條和一個顏色視窗來顯示所選顏色的視窗。透過改變滑動條的位置,我們可以選擇特定的顏色值。
H的範圍在0到179之間,而S和V的範圍在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 − 當滑動條的值改變時執行的函數。
要建立一個作為HSV顏色調色板的滑動條,可以按照以下步驟進行:
第一步是導入所需的庫。所需的Python函式庫是OpenCV和NumPy。請確保您已經安裝了它們。
import cv2 import numpy as np
接下來定義一個回呼函數。它以滑動條位置作為預設參數。我們定義這個函數不做任何動作。
def nothing(x): pass
定義黑色圖像並建立一個名為HSV顏色調色板的視窗。軌跡條和顏色將在此視窗中顯示。
img = np.zeros((300,650,3), np.uint8) window_name = 'Trackbar Color Palette' cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)
建立顏色變更的滑動條,傳遞所有五個參數
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
在這個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()
當您執行上述程式時,它將顯示下列輸出視窗。若要關閉輸出窗口,請按下‘q’按鈕。
預設情況下,三個滑動條的值都是0 ,視窗的顏色是黑色。滑動滑動條,您將在顏色視窗中看到相應的顏色。
的中文翻譯為:
在這個程式中,我們建立了一個視窗作為一個HSV顏色調色板,其中包含一個開關按鈕。我們創建了四個滑動條,三個用於HSV顏色,一個用於開關按鈕。
當開關按鈕開啟時,只顯示顏色影像中的顏色。滑動滑動條,您將在顏色視窗中獲得相應的顏色顯示。
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()
當您執行上述程式時,它將顯示下列輸出視窗。若要關閉輸出窗口,請按下‘q’按鈕。
預設情況下,所有滑動條的值都為0。視窗的顏色是黑色的。當您將開關打開(選擇為1)並滑動HSV顏色滑動條到所需的值時,視窗的顏色將與設定的值相對應。對於亮色,選擇S和V滑動條的最大值,並滑動H滑動條。
當開關關閉時,滑動滑動條不會有任何變化
如果在開關關閉時(設定為0)滑動滑動條,那麼視窗的顏色不會發生任何變化。它將保持原樣(即黑色)。
以上是如何使用OpenCV Python創建一個HSV顏色調色板的滑動條?的詳細內容。更多資訊請關注PHP中文網其他相關文章!