轨迹栏作为调色板

作者|OpenCV-Python Tutorials
编译|Vincent
来源|OpenCV-Python Tutorials

目标

  • 了解将轨迹栏固定到OpenCV窗口
  • 您将学习以下功能:cv.getTrackbarPoscv.createTrackbar等。

代码演示

在这里,我们将创建一个简单的应用程序,以显示您指定的颜色。您有一个显示颜色的窗口,以及三个用于指定B、G、R颜色的跟踪栏。滑动轨迹栏,并相应地更改窗口颜色。默认情况下,初始颜色将设置为黑色。

对于cv.getTrackbarPos()函数,第一个参数是轨迹栏名称,第二个参数是它附加到的窗口名称,第三个参数是默认值,第四个参数是最大值,第五个是执行的回调函数每次跟踪栏值更改。回调函数始终具有默认参数,即轨迹栏位置。在我们的例子中,函数什么都不做,所以我们简单地通过。

轨迹栏的另一个重要应用是将其用作按钮或开关。默认情况下,OpenCV不具有按钮功能。因此,您可以使用轨迹栏获得此类功能。在我们的应用程序中,我们创建了一个开关,只有在该开关为ON的情况下,该应用程序才能在其中运行,否则屏幕始终为黑色。

  1. import numpy as np
  2. import cv2 as cv
  3. def nothing(x):
  4. pass
  5. # 创建一个黑色的图像,一个窗口
  6. img = np.zeros((300,512,3), np.uint8)
  7. cv.namedWindow('image')
  8. # 创建颜色变化的轨迹栏
  9. cv.createTrackbar('R','image',0,255,nothing)
  10. cv.createTrackbar('G','image',0,255,nothing)
  11. cv.createTrackbar('B','image',0,255,nothing)
  12. # 为 ON/OFF 功能创建开关
  13. switch = '0 : OFF \n1 : ON'
  14. cv.createTrackbar(switch, 'image',0,1,nothing)
  15. while(1):
  16. cv.imshow('image',img)
  17. k = cv.waitKey(1) & 0xFF
  18. if k == 27:
  19. break
  20. # 得到四条轨迹的当前位置
  21. r = cv.getTrackbarPos('R','image')
  22. g = cv.getTrackbarPos('G','image')
  23. b = cv.getTrackbarPos('B','image')
  24. s = cv.getTrackbarPos(switch,'image')
  25. if s == 0:
  26. img[:] = 0
  27. else:
  28. img[:] = [b,g,r]
  29. cv.destroyAllWindows()

该应用程序的屏幕截图如下所示:

轨迹栏作为调色板 - 图1

练习题

  1. 使用轨迹栏创建颜色和画笔半径可调的Paint应用程序。有关绘制的信息,请参阅有关鼠标处理的先前教程。