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

初始化到时候,为原图

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

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

相关推荐
懒大王爱吃狼30 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
深度学习lover3 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
API快乐传递者4 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
阡之尘埃6 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
丕羽9 小时前
【Pytorch】基本语法
人工智能·pytorch·python
ctrey_9 小时前
2024-11-1 学习人工智能的Day20 openCV(2)
人工智能·opencv·学习
bryant_meng9 小时前
【python】Distribution
开发语言·python·分布函数·常用分布
绕灵儿10 小时前
OpenCV通过指针裁剪图像
人工智能·opencv·计算机视觉
m0_5945263010 小时前
Python批量合并多个PDF
java·python·pdf