這里我們創建一個簡單的應用來顯示你指定的顏色。你有一個窗口來顯示顏色,三個跟蹤條來指定B, G, R顏色。你跟蹤條到指定的位置,窗口顏色相應的變化。默認情況下初始顏色是黑色。
對于cv2.getTrackbarPos()函數, 第一個參數是跟蹤條名字,第二個是要附著的窗口名字,第三個參數是默認值,第四個是最大值第五個參數是回調函數,指明當跟蹤條的值變化時要執行的操作?;卣{函數有默認參數,是拖動條位置,在我們這,函數什么也不做,所以我們不管。
另一個重要的應用是我們把跟蹤條當做按鈕或開關,OpenCV默認沒有按鈕功能。所以你可以讓跟蹤條具備這種功能。在我們的應用里,我們創建了一個開關,只有開關是開的時候應用才工作,否則就一直是黑屏。
import cv2
import numpy as np
def nothing(x):
? ? pass
# Create a black image, a window
img = np.zeros((300, 512, 3), np.uint8)
cv2.namedWindow('image')
# create trackbars for color change
cv2.createTrackbar('R', 'image', 0, 255, nothing)
cv2.createTrackbar('G', 'image', 0, 255, nothing)
cv2.createTrackbar('B', 'image', 0, 255, nothing)
# create switch for ON/OFF functionality
switch='0 : OFF\n1 : ON'
cv2.createTrackbar(switch, 'image', 0, 1, nothing)
while(1):
? ? cv2.imshow('image', img)
? ? k = cv2.waitKey(1) & 0xFF
? ? if k == 27:
? ? ? ? break
? ? # get current positions of four trackbars
? ? r = cv2.getTrackbarPos('R', 'image')
? ? g = cv2.getTrackbarPos('G', 'image')
? ? b = cv2.getTrackbarPos('B', 'image')
? ? s = cv2.getTrackbarPos(switch, 'image')
? ? if s == 0:
? ? ? ? img[:] = 0
? ? else:
? ? ? ? img[:] = [b, g, r]
cv2.destroyAllWindows()