在 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()