赞
踩
下面我们将建立一个简单的应用来显示指定的颜色。这里将使用一个窗口显示颜色,三个跟踪条指定每一个BGR通道颜色。当滑动追踪条时,窗口的颜色相应改变。默认的初始颜色设定为黑色。
函数cv2.createTrackbar( trackbarname, winname, value, count, trackbarcallback),第一个参数是跟踪条名字,第二个参数是放置跟踪条的窗口的名字,第三个参数是默认值,第四个参数是最大值,第五个参数是每次追踪条值变化时执行的回调函数。回调函数总是会将追踪条的位置作为默认参数。在这个案例中,回调函数不会有任何功能,因此使用pass关键字跳过。
函数cv2.getTrackbarPos( trackbarname, winname)获取限制追踪条的位置,也就是但会现在的值。
追踪条的另一个应用是用来当按钮或者转换器。默认情况下,OpenCV没有按钮函数。因此,我们可以使用追踪条来实现这样的函数功能。在这个应用中,我们创建一个转换器,当转换器切换到on上,应用正常工作,否则屏幕将一直是黑色。
详细代码如下:
- import numpy as np
- import cv2 as cv
- # 定义回调函数
- def nothing(x):
- pass
- # 创建一个黑色图像和一个窗口
- img = np.zeros((300,512,3), np.uint8)
- cv.namedWindow('image')
- # 创建三个追踪条实现颜色变换
- cv.createTrackbar('R','image',0,255,nothing)
- cv.createTrackbar('G','image',0,255,nothing)
- cv.createTrackbar('B','image',0,255,nothing)
- # 创建一个切换器实现ON/OFF函数
- switch = '0 : OFF \n1 : ON'
- cv.createTrackbar(switch, 'image',0,1,nothing)
- while(1):
- cv.imshow('image',img)
- k = cv.waitKey(1) & 0xFF
- if k == 27:
- break
- # 获取追踪条现在的位置(也就是现在的值)
- r = cv.getTrackbarPos('R','image')
- g = cv.getTrackbarPos('G','image')
- b = cv.getTrackbarPos('B','image')
- s = cv.getTrackbarPos(switch,'image')
- if s == 0:
- img[:] = 0
- else:
- img[:] = [b,g,r]
- cv.destroyAllWindows()
应用结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。