如何使用OpenCV Python創建一個HSV顏色調色板的滑動條?

WBOY
發布: 2023-08-18 15:01:30
轉載
1445 人瀏覽過

要在OpenCV中建立HSV(色調、飽和度和值)色彩調色盤的滑動條,我們使用兩個不同的函數。這些函數是cv2.reateTrackbar()cv2.getTrackbarPos()

  • 使用cv2.reateTrackbar()函數建立滑動條,而cv2.getTrackbarPos()函數用於存取所選滑動條位置的值。

  • 使用這兩個函數,我們建立一個包含H、S、V顏色的滑動條和一個顏色視窗來顯示所選顏色的視窗。透過改變滑動條的位置,我們可以選擇特定的顏色值。

  • H的範圍在0179之間,而SV的範圍在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− 當滑動條的值改變時執行的函數。

步驟

要建立一個作為HSV顏色調色板的滑動條,可以按照以下步驟進行:

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

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
登入後複製

Example 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()
登入後複製

輸出

當您執行上述程式時,它將顯示下列輸出視窗。若要關閉輸出窗口,請按下‘q’按鈕。

如何使用OpenCV Python創建一個HSV顏色調色板的滑動條?

預設情況下,三個滑動條的值都是0,視窗的顏色是黑色。滑動滑動條,您將在顏色視窗中看到相應的顏色。

Example 2

的中文翻譯為:

範例2

在這個程式中,我們建立了一個視窗作為一個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’按鈕。

如何使用OpenCV Python創建一個HSV顏色調色板的滑動條?

預設情況下,所有滑動條的值都為0。視窗的顏色是黑色的。當您將開關打開(選擇為1)並滑動HSV顏色滑動條到所需的值時,視窗的顏色將與設定的值相對應。對於亮色,選擇SV滑動條的最大值,並滑動H滑動條。

當開關關閉時,滑動滑動條不會有任何變化

如果在開關關閉時(設定為0)滑動滑動條,那麼視窗的顏色不會發生任何變化。它將保持原樣(即黑色)。

以上是如何使用OpenCV Python創建一個HSV顏色調色板的滑動條?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!