Bootstrap

OpenCV基础:TrackBar控件实战

在 OpenCV 中,createTrackbar 和 getTrackbarPos 是用于创建和获取滑动条(Trackbar)控件的函数,常用于图像处理或调参界面的交互式应用。通过滑动条,用户可以动态调整参数(如图像处理中的阈值、滤波器强度等),并实时查看效果。


 createTrackbar

作用:在窗口中创建一个滑动条,允许用户通过拖动滑动条来修改一个整数值。

函数原型

cv2.createTrackbar(trackbarName, windowName, value, count, onChange)

参数说明

  • trackbarName (str):滑动条的名称。
  • windowName (str):该滑动条所在的窗口名称,窗口必须通过 cv2.namedWindow 先创建。
  • value (int):滑动条的初始值。
  • count (int):滑动条的最大值,最小值默认为 0。
  • onChange (function):回调函数,当滑动条的值发生改变时,回调函数会被调用。

返回值:无。

使用说明

  •  createTrackbar 创建一个可视化的滑动条,允许用户在给定的最小值(0)和最大值之间滑动,设置一个整数值。
  • onChange 回调函数在滑动条值变化时被调用,可以用来实时响应滑动条的变化(如更新图像或参数)。

 getTrackbarPos

作用:获取指定滑动条当前的值。

函数原型

cv2.getTrackbarPos(trackbarName, windowName)

参数说明

  • trackbarName (str):滑动条的名称,必须与 createTrackbar 中的名称一致。
  • windowName (str):滑动条所在的窗口名称,必须与 createTrackbar 中的窗口名称一致。

返回值

返回滑动条的当前值(一个整数)。

使用说明

getTrackbarPos 用于获取当前滑动条的值,通常与滑动条的回调函数结合使用,在回调中处理滑动条值的实时变化,或者在程序其他地方获取滑动条的值来动态更新处理过程。


结合使用

通常,createTrackbar 和 getTrackbarPos 一起使用,用户通过滑动条调整值,程序实时获取滑动条的当前值,并应用到图像处理或其他任务中。常见的应用场景包括:

  • 调整图像的亮度、对比度、色调等。
  • 设置阈值、滤波器的强度、颜色范围等。
  • 用于图像分割、特征检测等参数的交互式调节。

 实战

通过TrackBar控件改变背景颜色,代码如下:

import cv2
import numpy as np

# NONE
def callback():
    pass

#创建窗口
cv2.namedWindow('trackbar', cv2.WINDOW_NORMAL)
cv2.resizeWindow('trackbar', 640, 480)

#创建trackbar控件
cv2.createTrackbar('R', 'trackbar', 0, 255, callback)
cv2.createTrackbar('G', 'trackbar', 0, 255, callback)
cv2.createTrackbar('B', 'trackbar', 0, 255, callback)

#创建背景图
img = np.zeros((480,640,3), np.uint8)

while True:
    
    #获取trackbar值
    r = cv2.getTrackbarPos('R', 'trackbar')
    g = cv2.getTrackbarPos('G', 'trackbar')
    b = cv2.getTrackbarPos('B', 'trackbar')

    #设置到图片中
    img[:] = [b,g,r]

    #将图片展示出来
    cv2.imshow('trackbar', img)

    key = cv2.waitKey(1)
    if key & 0xFF == ord('q'):
        break;

cv2.destroyAllWindows()

结果 

;