• 【python】OpenCV GUI——Trackbar(14.2)


    在这里插入图片描述

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

    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 倍之间

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

    初始化到时候,为原图
    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

  • 相关阅读:
    博客马拉松|和 OpenMLDB 一路向前
    Pandas高级操作
    黑马JVM总结(十二)
    Java中HashMap之replaceAll()方法具有什么功能呢?
    模糊PID之matlab模糊控制器配置
    mysql索引不生效
    电脑系统重装后音频驱动程序怎么修复
    13. 一文快速学懂常用工具——Kubernetes 命令
    C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6
    Yocto Beaglebone-Black 编译记录
  • 原文地址:https://blog.csdn.net/bryant_meng/article/details/139561694