【python】OpenCV GUI——Trackbar(14.2)

学习来自 OpenCV基础(12)OpenCV GUI中的鼠标和滑动条

文章目录

  • [GUI 滑条介绍](#GUI 滑条介绍)
  • [cv2.createTrackbar 介绍](#cv2.createTrackbar 介绍)
  • 牛刀小试

GUI 滑条介绍

GUI滑动条是一种直观且快速的调节控件,主要用于改变一个数值或相对值。以下是关于GUI滑动条的详细介绍:

一、功能和应用:

滑动条可应用于多种调节功能中,如温度、音量、亮度等。

它允许用户通过拖动滑块来改变一个数值或相对值,从而实现对某个参数或设置的快速调整。

二、类型:

滑动条有垂直(JScrollBar.VERTICAL)和水平(JScrollBar.HORIZONTAL)两种类型,分别用于垂直和水平方向的数值调节。

三、范围设置:

滑动条具有可自定义的最大值和最小值。例如,在MATLAB GUI编程中,可以通过设置滑动条的"min"和"max"属性来定义其范围。

四、显示与交互:

滑动条通常与文本框或其他显示控件结合使用,以便用户能够直观地看到当前的数值或相对值。

当用户拖动滑块时,滑动条会触发一个回调函数(Callback),该函数可以获取滑动条的当前值,并根据需要进行相应的处理或显示。

五、自定义:

滑动条的外观和行为可以通过多种属性进行自定义,如滑块的颜色、大小、形状等。

在某些GUI设计工具中,还可以为滑动条添加自定义的图片或图标,以提供更好的用户体验。

六、编程实现:

在编程实现GUI滑动条时,通常需要创建一个滑动条控件,并设置其属性(如范围、初始值等)。

然后,需要编写一个回调函数来处理滑动条的事件(如用户拖动滑块)。在回调函数中,可以获取滑动条的当前值,并更新其他控件的显示或执行相应的操作。

七、示例:

例如,在MATLAB GUI编程中,可以使用App Designer或GUIDE等工具来创建滑动条控件。然后,通过双击滑动条来查看其属性并设置范围等参数。接下来,可以编写一个回调函数来获取滑动条的当前值,并将其显示在文本框中或用于其他计算和操作。

八、总结:

GUI滑动条是一种功能强大且易于使用的控件,它允许用户通过拖动滑块来快速改变一个数值或相对值。通过合理的设计和编程实现,滑动条可以为用户提供直观、便捷的交互体验。

cv2.createTrackbar 介绍

cv2.createTrackbar 是 OpenCV-Python 中用于在窗口中创建滑动条(Trackbar)的函数。以下是对 cv2.createTrackbar 函数的中文文档说明:

一、函数原型

cv2.createTrackbar(trackbarName, windowName, value, count, onChange=None, userdata=None)

二、参数说明

trackbarName (str): 滑动条的名称。

windowName (str): 滑动条所附着的窗口的名称。

value (int): 滑动条的默认值(整数类型)。创建时,滑块位置由此变量定义。

count (int): 滑动条的最大值。注意,滑动条的最小位置始终为 0。

onChange (callable, optional): 回调函数,每次滑动都会调用该函数。该函数通常都会含有一个默认参数,即滑动条的位置。如果未提供,则默认为 None。

userdata (any, optional): 按原样传递到回调函数的用户数据。它可用于处理跟踪条事件,而无需使用全局变量。如果未提供,则默认为 None。

三、返回值

该函数没有返回值。

牛刀小试

输入图片

实现根据滑动条来缩放图片

1/2 至 2 倍之间

python 复制代码
import cv2

maxScaleUp = 150
scaleFactor = 1
windowName = "Resize Image"
trackbarValue = "Scale"  # 滑动条的名字

# 读取图片
image = cv2.imread("1.jpg")

# 创建一个显示结果的窗口,并将标志设置为"cv2.WINDOW_AUTOSIZE"
cv2.namedWindow(windowName, cv2.WINDOW_AUTOSIZE)


# 回调函数
def scaleImage(*args):
    # 从滑动条得到比例因子
    scaleFactor = 0.5 + args[0]/100.0
    # 调整图像大小
    scaledImage = cv2.resize(image, None, fx=scaleFactor, fy= scaleFactor, interpolation=cv2.INTER_LINEAR)
    cv2.imshow(windowName, scaledImage)


# 创建滑动条并关联回调函数
cv2.createTrackbar(trackbarValue, windowName, scaleFactor, maxScaleUp, scaleImage)

# 显示图像
cv2.imshow(windowName, image)
c = cv2.waitKey(0)
cv2.destroyAllWindows()

初始化到时候,为原图

拖动到最小,为原图的一半

拖拽到最大,为原图的两倍

相关推荐
极客代码3 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
庞传奇5 分钟前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow
华清远见IT开放实验室12 分钟前
【每天学点AI】实战图像增强技术在人工智能图像处理中的应用
图像处理·人工智能·python·opencv·计算机视觉
只怕自己不够好26 分钟前
《OpenCV 图像缩放、翻转与变换全攻略:从基础操作到高级应用实战》
人工智能·opencv·计算机视觉
mqiqe37 分钟前
Elasticsearch 分词器
python·elasticsearch
不去幼儿园2 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
幽兰的天空3 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
网易独家音乐人Mike Zhou6 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
安静读书6 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
小陈phd6 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉