1-5 色彩板跟踪条——OpenCV-Python教程翻译

目标

  • 掌握在OpenCV窗口中插入跟踪条
  • 掌握函数:cv2.getTrackbarPos()和cv2.createTrackbar()等

案例项目

下面我们将建立一个简单的应用来显示指定的颜色。这里将使用一个窗口显示颜色,三个跟踪条指定每一个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()

应用结果如下:

猜你喜欢

转载自blog.csdn.net/qq_22235957/article/details/81104876
今日推荐