在OpenCV中,使用createTrackbar函数,如何将默认滑块位置设置为最大值?
我有几个滑块,一些代表最小值,一些代表最大值。如果最大值的滑块以最大值(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()
在加载时,它最终看起来像这样:
答案 0 :(得分:3)
只需使用值字段:
Python:cv.CreateTrackbar(trackbarName,windowName,value,count, onChange)→无
参数:
trackbarname - 创建的跟踪栏的名称。winname - 将用作父级的窗口的名称 创建的跟踪栏。
value - 指向整数的可选指针 变量,其值反映滑块的位置。上 创建时,滑块位置由此变量定义。
算了 - 滑块的最大位置。最小位置始终为0.onChange - 指向每次滑块时调用的函数 改变立场。
此函数应该原型为void FOO(INT,无效*); ,其中第一个参数是轨迹栏位置 第二个参数是用户数据(参见下一个参数)。如果 回调是NULL指针,没有调用回调,但只是 值已更新。 userdata - 按原样传递给的用户数据 打回来。它可用于处理跟踪栏事件而无需使用 全局变量。
答案 1 :(得分:1)
我认为你没有太多关注阅读文档,你可以在那里找到:
value - 指向整数变量的可选指针,该变量的值反映滑块的位置。创建后,滑块位置由此变量定义
计数 - 滑块的最大位置。最小位置始终为0.
我可以理解这一点,您只需将value
设置为count
答案 2 :(得分:0)
该值通常应为0-100的整数倍,如果默认值是betweek 0-1乘以x 100。
对我有用。