Skip to content

作为调色板的跟踪栏

目标

代码演示

这里,我们将创建用以显示指定颜色的简单程序。 你有一个显示颜色的窗口和三个轨迹栏,用来指定 B,G,R 颜色。你可以滑动轨迹栏改变窗口的颜色。默认情况下,初始颜色为黑色。

对于 cv.createTrackbar() 函数,第一个参数是轨迹栏名字,第二个参数是被附上的窗口名字,第三个参数是默认值,第四个是最大值,第五个是回调函数——滑条改变所执行的函数。这个回调函数也有一个默认参数,表示轨迹栏位置。我们并不关心函数做什么事,所以只是简单提一下。

轨迹栏的另一个重要应用是用作按钮或者开关。OpenCV在默认情况下没有按钮功能,因此我们用轨迹栏实现这样的功能。在我们的程序中创建了一个开关,其中程序只会在开关打开时有效,否则屏幕始终是黑色。

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)
# 创建一个用来启用和关闭功能的开关
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
    # get current positions of four trackbars
    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()

程序的截图如下:

image

练习

  1. 创建一个 Paint 程序,具有可调节颜色和笔刷半径的轨迹栏。关于绘画,参考之前的鼠标事件教程。


回到顶部