首頁  >  文章  >  後端開發  >  如何使用OpenCV Python建立一個RGB顏色調色盤的滑動條?

如何使用OpenCV Python建立一個RGB顏色調色盤的滑動條?

WBOY
WBOY轉載
2023-08-30 16:33:01585瀏覽

OpenCV中,可以使用 cv2.reateTrackbar()函數建立軌跡列。要存取所選軌跡欄位置的值,我們使用 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 函式庫是 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”按鈕。

如何使用OpenCV Python创建一个RGB颜色调色板的滑动条?

#所有三個軌跡欄的預設值都是零,視窗的顏色為黑色。滑動滑動條即可在顏色視窗中看到相應的顏色。

範例 2

在此程式中,我們建立一個視窗作為帶有切換按鈕的調色板。

我們創建了四個軌跡欄,三個用於 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」按鈕。

如何使用OpenCV Python创建一个RGB颜色调色板的滑动条?

#所有軌跡列的預設值為0。窗戶的顏色是黑色。當您打開開關(選擇1)並將RGB顏色滑桿滑動到所需的值時,顏色視窗將顯示相應的顏色。

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

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

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除