- 在这里,我们将创建一个简单的应用程序,以显示您指定的颜色。您有一个显示颜色的窗口,以及三个用于指定B、G、R颜色的跟踪栏。滑动轨迹栏,并相应地更改窗口颜色。默认情况下,初始颜色将设置为黑色。
- 对于 cv.getTrackbarPos() 函数,第一个参数是轨迹栏名称,第二个参数是它附加到的窗口名称,第三个参数是默认值,第四个参数是最大值,第五个是执行的回调函数每次跟踪栏值更改。回调函数始终具有默认参数,即轨迹栏位置。在我们的例子中,函数什么都不做,所以我们简单地通过。
- 轨迹栏的另一个重要应用是将其用作按钮或开关。默认情况下,OpenCV不具有按钮功能。因此,您可以使用轨迹栏获得此类功能。在我们的应用程序中,我们创建了一个开关,只有在该开关为ON的情况下,该应用程序才能在其中运行,否则屏幕始终为黑色。
下面是代码演示:
import cv2 as cv
import numpy as np
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):
# 得到四条轨道当前位置
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] # 使用BGR顺序
cv.imshow("image", img)
k = cv.waitKey(1) & 0xFF
if k == 27:
break
cv.destroyAllWindows()