在 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)
在加载时,它最终看起来像这样:
只需使用值字段:
Python:cv.CreateTrackbar(trackbarName, windowName, value, count, onChange) ?没有任何
参数:
trackbarname – 创建的轨迹栏的名称。winname – 将用作创建的轨迹栏的父级的窗口的名称。
value – 指向一个整数变量的可选指针,其值反映了滑块的位置。创建时,滑块位置由该变量定义。
count – 滑块的最大位置。最小位置始终为 0。
onChange – 每次滑块改变位置时要调用的函数的指针。
这个函数的原型应该是 void Foo(int,void*); ,其中第一个参数是轨迹栏位置,第二个参数是用户数据(参见下一个参数)。如果回调是 NULL 指针,则不会调用回调,而只会更新值。userdata – 按原样传递给回调的用户数据。它可用于在不使用全局变量的情况下处理轨迹栏事件。
| 归档时间: |
|
| 查看次数: |
10040 次 |
| 最近记录: |