OpenCV-Python(四):通过滑块修改颜色
目标
- 学习将滑块绑定到OpenCV的窗体
- 学习cv2.getTrackbarPos(), cv2.createTrackbar()等函数
代码部分
我们将创建一个显示由你指定颜色的应用程序。这个应用程序上有一个显示颜色的窗体和三个调色的滑块,这三个滑块分别对应着RGB三色的值。当你滑动滑块的时候,窗体的颜色也会随之改变。在默认情况下,窗体的颜色是黑色的。
对于函数cv2.getTrackbarPos()函数而言,各参数的含义如下:
- 滑块的名字
- 相关联的窗体的名字
- 默认参数
- 最大值
- 回调函数,每次滑块值被改变是被调用
回调函数将滑块的位置作为默认参数。在我们的案例中,由于函数并没有执行任何操作,所以我们简单的带过。
另外一点,滑块可以被当做按钮或者开关使用。在默认情况下,OpenCV并没有按钮相关的函数,因此,你可以将这个当做相关的函数。在我们的应用程序中,我们创建了一个开关用于控制这个程序是否有效。当开关为ON时,可以调整颜色,否则窗体一直为黑色。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import cv2 import numpy as np
def nothing(x): pass
img = np.zeros((300, 512, 3), np.uint8) cv2.namedWindow('image')
cv2.createTrackbar('R', 'image', 0, 255, nothing) cv2.createTrackbar('G', 'image', 0, 255, nothing) cv2.createTrackbar('B', 'image', 0, 255, nothing)
switch = '0 : OFF\n1 :ON' cv2.createTrackbar(switch, 'image', 0, 1, nothing)
while(1): cv2.imshow('image', img) k = cv2.waitKey(1) & 0xFF if k == 27: break
r = cv2.getTrackbarPos('R', 'image') g = cv2.getTrackbarPos('G', 'image') b = cv2.getTrackbarPos('B', 'image') s = cv2.getTrackbarPos(switch, 'image')
if s == 0: img[:] = 0 else: img[:] = [b,g,r]
cv2.destroyAllWindows()
|
练习
创建一个可变颜色的画板应用,利用前一章学到的画画技巧。