<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    滑動條組件

    概要

    本文講解了trackar的api,包括創建trackar,trackbar回調函數的使用, 獲取多個trackar的取值。

    keywords trackar 滑動條 回調函數 同步 createTrackbar setTrackbarPos getTrackbarPos

    創建滑動條

    首先我們需要創建一個Trackbar , 調用createTrackbar 這個函數

    cv2.createTrackbar(trackbar_name,window_name,min_value,max_value,callback_func)

    依次傳入的函數

    • trackbar_name 滑條的名稱,獲取這個滑條的數值也是通過名稱

    • window_name 滑條所在窗口 (window) 的名稱

    • min_value 滑條最小值

    • max_value 滑條最大值

    • callback_func 回調函數,這個參數其實類似C語言中的函數指針,我傳入的是函數名稱,每次滑條被拖動的時候,都會執行這個函數. 

    例如: 

    # 這個nothing的意思就是啥也不做。
    def nothing(x):
        pass
    cv2.createTrackbar('gray_value','image',0,255,nothing)
    

    這里的nothing(x) , 被傳入的x 實際上是滑條的當前取值。

    你也可以改成這樣, 看一下x 的值。

    # 這個nothing的意思就是啥也不做。
    def nothing(x):
        print(x)
    cv2.createTrackbar('gray_value','image',0,255,nothing)
    

    x 是我命名的值, 你可以命名為任意名稱。

    Trackbar的使用實例可以見通過HighGUI的Trackbar制作可變色背景

    灰度調色盤滑條(完整版)

    設置滑動條的位置

    初始化滑動條的位置需要用到setTrackbarPos這個函數。

    cv2.setTrackbarPos('trackbar_name','window_name', value)
    

    依次傳入Trackbar的名字,Trackbar所在的窗口的名字, 還有Trackbar的初始值。

    使用樣例

    cv2.setTrackbarPos('gray_value','image', 10)
    

    獲取滑動條的位置

    除了在回調函數中獲取Trackbar的取值, 還可以通過getTrackbarPos 函數獲取Trackbar的取值。

    依次傳入Trackbar的名字,Trackbar所在的窗口的名字, 返回當前Trackbar的取值。

    value = cv2.getTrackbarPos('trackbar_name','window_name')
    

    使用樣例

    gvalue = cv2.getTrackbarPos('gray_value','image')
    

    實例1-單個Trackbar

    單個Trackbar的使用樣例。
    image

    single_trackbar_demo_01.py

    import cv2
    
    # 創建窗口
    cv2.namedWindow('image_win')
    
    
    value = None
    def update(x):
        # 回調函數 更新value的值
        global value
        value = x
        print('Update Value, value ={}'.format(value))
    
    # 創建一個滑動條對象 數值名字叫做 value_name
    # 滑動條創建在 image_win 窗口之下
    # 取值范圍為 0-255, 回調函數為update
    cv2.createTrackbar('value_name','image_win',0,255,update)
    
    # 等待按鍵按下
    cv2.waitKey(0)
    # 銷毀窗口
    cv2.destroyAllWindows()
    

    實例2-設定trackbar的默認取值

    設定Trackbar上的默認值為125
    tracbar-default-value.png

    import cv2
    
    # 創建窗口
    cv2.namedWindow('image_win')
    
    
    value = None
    def update(x):
        # 回調函數 更新value的值
        global value
        value = x
        print('Update Value, value ={}'.format(value))
    
    # 創建一個滑動條對象 數值名字叫做 value_name
    # 滑動條創建在 image_win 窗口之下
    # 取值范圍為 0-255, 回調函數為update
    cv2.createTrackbar('value_name','image_win',0,255,update)
    
    
    cv2.setTrackbarPos('value_name','image_win',125)
    
    # 等待按鍵按下
    cv2.waitKey(0)
    # 銷毀窗口
    cv2.destroyAllWindows()
    

    實例3-獲取多個Trackbar的Pos

    三個trackar,每次有任意一個變更的時候都同步所有的值。

    multiple-trackbar.png

    import cv2
    
    # 創建窗口
    cv2.namedWindow('image_win')
    
    
    value = (0, 0, 0)
    def update(x):
        # 回調函數 更新value的值
        global value
        r_value = cv2.getTrackbarPos('R','image_win')
        g_value = cv2.getTrackbarPos('G', 'image_win')
        b_value = cv2.getTrackbarPos('B', 'image_win')
    
        value = (r_value, g_value, b_value)
    
        print('Update Value, value ={}'.format(value))
    
    # 創建一個滑動條對象 數值名字叫做 R / G / B 
    # 滑動條創建在 image_win 窗口之下
    # 取值范圍為 0-255, 回調函數為update
    cv2.createTrackbar('R','image_win',0,255,update)
    cv2.createTrackbar('G','image_win',0,255,update)
    cv2.createTrackbar('B','image_win',0,255,update)
    
    
    cv2.setTrackbarPos('R','image_win',125)
    cv2.setTrackbarPos('G','image_win',125)
    cv2.setTrackbarPos('B','image_win',125)
    
    # 等待按鍵按下
    cv2.waitKey(0)
    # 銷毀窗口
    cv2.destroyAllWindows()
    

    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人