如何在 OpenCV 中设置轨迹栏的默认位置?

j0h*_*j0h 3 python opencv

在 OpenCV 中,使用 createTrackbar 函数,如何将默认滑块位置设置为最大值?

我有几个滑块,一些代表最小值,一些代表最大值。如果最大值的滑块从最大值 (255) 而不是最小值 (0) 开始,那就太好了。

我环顾了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')
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()
Run Code Online (Sandbox Code Playgroud)

在加载时,它最终看起来像这样:

在此处输入图片说明

mee*_*aig 7

只需使用值字段:

Python:cv.CreateTrackbar(trackbarName, windowName, value, count, onChange) ?没有任何

参数:
trackbarname – 创建的轨迹栏的名称。

winname – 将用作创建的轨迹栏的父级的窗口的名称。

value – 指向一个整数变量的可选指针,其值反映了滑块的位置。创建时,滑块位置由该变量定义。

count – 滑块的最大位置。最小位置始终为 0。

onChange – 每次滑块改变位置时要调用的函数的指针。

这个函数的原型应该是 void Foo(int,void*); ,其中第一个参数是轨迹栏位置,第二个参数是用户数据(参见下一个参数)。如果回调是 NULL 指针,则不会调用回调,而只会更新值。userdata – 按原样传递给回调的用户数据。它可用于在不使用全局变量的情况下处理轨迹栏事件。

来源