2016-09-07 93 views
1

在OpenCV中,使用createTrackbar函數,某人如何將默認滑塊位置設置爲最大值?如何在OpenCV中設置軌跡條的默認位置?

我有幾個滑塊,一些代表最小值,一些代表最大值。如果滑塊的最大值是最大值(255)而不是最小值(0),那將會很不錯。

我環顧了OpenCV documentation pages,但我還沒有找到解決方案。

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') 
cv2.namedWindow('hsv') 
cv2.namedWindow('masq') 
cap = cv2.VideoCapture(0) 

# create trackbars for color change 
cv2.createTrackbar('R-low','image',0,255,nothing) 
cv2.createTrackbar('R-high','image',0,255,nothing) 

cv2.createTrackbar('G-low','image',0,255,nothing) 
cv2.createTrackbar('G-high','image',0,255,nothing) 

cv2.createTrackbar('B-low','image',0,255,nothing) 
cv2.createTrackbar('B-high','image',0,255,nothing) 


while(1): 
    ret, img = cap.read() 
    # Convert BGR to HSV 
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 

    cv2.imshow('image',img) 
    k = cv2.waitKey(1) & 0xFF 
    if k == 27: 
     break 

    # get current positions of four trackbars 
    rl = cv2.getTrackbarPos('R-low','image') 
    rh = cv2.getTrackbarPos('R-high','image') 

    gl = cv2.getTrackbarPos('G-low','image') 
    gh = cv2.getTrackbarPos('G-high','image') 

    bl = cv2.getTrackbarPos('B-low','image') 
    bh = cv2.getTrackbarPos('B-high','image') 

    lower = np.array([rl,gl,bl]) 
    upper = np.array([rh,gh,bh]) 

    print(rl) 

    img[:] = [bl,gl,rl] 

    # Threshold the HSV image to get only certain colors 
    mask = cv2.inRange(hsv, lower, upper)  


    res = cv2.bitwise_and(img,img, mask= mask) 

    cv2.imshow('image',img) 
    cv2.imshow('masq',mask) 
    cv2.imshow('hsv',hsv) 


cv2.destroyAllWindows() 

上的負載,它結束了看起來像這樣:

enter image description here

回答

2

只需使用值字段:

的Python:cv.CreateTrackbar(trackbarName,windowName,價值,計數, onChange)→無

參數:
trackbarname - 創建的軌跡欄的名稱。

winname - 將用作創建的跟蹤欄的父代 的窗口的名稱。

value - 指向整數 變量的可選指針,其值反映滑塊的位置。在創建 時,滑塊位置由此變量定義。

count - 滑塊的最大位置。最小位置始終爲0.

onChange - 每當滑塊 更改位置時要調用的函數指針。

此函數應該作爲void的原型 Foo(int,void *); ,其中第一個參數是跟蹤欄位置 ,第二個參數是用戶數據(請參閱下一個參數)。如果 回調函數是NULL指針,則不會調用回調函數,但只會更新 值。 userdata - 傳遞給 回調的用戶數據。它可以用於處理軌跡條事件,而不使用全局變量 。

Source

1

我覺得你沒太注意閱讀文檔,那裏你可以找到:
- 可選指向一個整型變量,其值反映了滑塊的位置。創建時,滑塊位置由此變量定義。
count - 滑塊的最大位置。最小位置始終爲0

我能理解這一點,你只需要設置一個value到同一像count

+1

或我的解讀是不同的。哦,我現在明白了。 – j0h