OpenCV-Python】滑动条Trackbar的创建和使用(createTrackbar())

简介: 该文章介绍了如何在OpenCV-Python中创建和使用滑动条(Trackbar)来动态调节参数,并通过实际代码示例演示了如何通过滑动条控制图像颜色。

OpenCV-Python】滑动条Trackbar的创建和使用(createTrackbar())

一、前言

滑动条(Trackbar)是一种可以动态调节参数的工具,它依附于窗口而存在。可以很明显的感受到交互,动态调参,针对寻找,rgb区间,hsv区间,等可以调整参数并查看效果的算法,滚动条算是很有用的一项工具

二、核心函数解析

核心函数一共有两个createTrackbar(),getTrackbarPos()

函数名 功能
createTrackbar() 创建滚动条
getTrackbarPos() 获取滚动条当前值

1、createTrackbar() 参数解析

createTrackbar() 这个函数用于创建一个可以调整数值的滑动条,并将滑动条附加到指定的窗口上。

该函数的参数有:
createTrackbar(const String& trackbarname, const String& winname, int *value, int count, TrackbarCallback onChange = 0, void *userdata = 0),具体含义为:

trackbarname:跟踪栏名称,创建的轨迹栏的名称。
Winname:窗口的名字,表示这个轨迹条会依附到哪个窗口上,即对应namedWindow()创建窗口时填的窗口名。
value:指向整数变量的可选指针,该变量的值反映滑块的初始位置。
count:表示滑块可以达到的最大位置的值,最小位置始终为0。
onChange:指向每次滑块更改位置时要调用的函数的指针,有默认值0。此函数的原型应为void XXX (int, void *); ,其中第一个参数是轨迹栏位置,第二个参数是用户数据(请参阅下一个参数)。如果回调是NULL指针,则不调用任何回调,而仅更新值。
userdata:传递给回调的用户数据,有默认值0。它可以用于处理轨迹栏事件,而无需使用全局变量。

注:如果使用的第三个参数value实参是全局变量或常数的话,完全可以不去管这个userdata参数。
只需要有前四个即可

2、getTrackbarPos() 参数解析

对于 getTrackbarPos() 函数,它也需要多个参数:

第一个参数是Tarckbar 名称;
第二个参数是它附加到的窗口名称;
第三个参数是默认值;
第四个参数是最大值;
第五个是执行的回调函数每次跟踪栏值更改。回调函数始终具有默认参数,即轨迹栏位置。

注:一般情况只需要有前2个即可

三、简单实战代码

在这里,我们将创建一个简单的应用程序,以通过滑动轨迹栏显示指定R,G,G的颜色。默认情况下,初始颜色将设置为黑色,代码如下:

import cv2 as cv
import numpy as np

cv.namedWindow('image',256)
#滚动条事件,默认为无,不需要其移动事改变什么
def task():
    pass
def demo():
    cv.createTrackbar('R','image',0,255,task)
    cv.createTrackbar('G','image',0,255,task)
    cv.createTrackbar('B','image',0,255,task)

    img=np.zeros((640,480,3),np.uint8)
    while True:
        r=cv.getTrackbarPos('R','image')
        g=cv.getTrackbarPos('G','image')
        b=cv.getTrackbarPos('B','image')
        img[:]=[r,g,b]
        cv.imshow('image',img)
        if cv.waitKey(1) &0xFF==27:
            break
    cv.destrayAllWindows()
if __name__=='__main__':
    demo()
相关文章
|
21天前
|
计算机视觉
OpenCV滑动条(createTrackbar()函数)如何在多个维度进行同步调整?
这篇文章介绍了如何在OpenCV中使用`createTrackbar()`函数创建多个滑动条以同步调整图像的多个维度(如亮度和对比度),通过将不同滑动条的回调函数合并为一个,确保它们在同一图像基础上进行调整。
|
计算机视觉 C++
【OpenCV • c++】滑动条的创建和使用
【OpenCV • c++】滑动条的创建和使用
172 0
|
XML 数据格式
【opencv3】滑动条调节RGB颜色阈值并输出滑动条的值
【opencv3】滑动条调节RGB颜色阈值并输出滑动条的值
|
计算机视觉
opencv之cv::createTrackbar使用及代码实现
opencv之cv::createTrackbar使用及代码实现
107 0
opencv之cv::createTrackbar使用及代码实现
|
计算机视觉
1.0.2-学习Opencv与MFC混合编程之---为播放AVI视频添加滑动条
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961642 版本1.0.2新增内容 Ø  全局变量和函数的添加: 在CVMFCview.cpp文件中增加全局变量和全局函数 //-----------------全局变量和函数-------...
890 0
|
计算机视觉 Windows
利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转
(一)问题的提出: OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分,一点参考价值都没有,怎么办? (二)解决的思路: 1.自己进行研究,不指望网络有现成的馅饼,因为那里多了去的陷阱,很可恶。
1306 0
|
10天前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
26 4
|
20天前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
18天前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
47 1
|
1月前
|
机器人 计算机视觉
巧用 OpenCV solvePnP() 函数完成由图像坐标系到机器人坐标系的转换(二维坐标系之间的转换)
巧用 OpenCV solvePnP() 函数完成由图像坐标系到机器人坐标系的转换(二维坐标系之间的转换)
36 2