精华内容
下载资源
问答
  • Trackbar as the Color Palette 滑动条操作 cv2.createTrackbar(trackbarName, windowName, value, count, onChange)cv2.getTrackbarPos(trackbarname, winname) trackbarName:轨道栏名称 win...

    Trackbar as the Color Palette

    滑动条操作

    cv2.createTrackbar(trackbarName, windowName, value, count, onChange)
    cv2.getTrackbarPos(trackbarname, winname)

    • trackbarName:轨道栏名称
    • windowName:窗口名称
    • value:参数的默认值
    • count:参数的最大值
    • onChange:执行的回调函数

    应用

    创建一个简单的应用程序,显示您指定的颜色。有一个显示颜色的窗口和三个轨道栏,用于指定B,G,R各颜色。可以滑动轨迹栏并相应地窗口颜色更改。默认情况下,初始颜色将设置为黑色。

    代码

    import numpy as np
    import cv2 
    
    def nothing(x):
        pass#在我们的例子中,函数什么都不做,所以我们简单地通过。
    
    # Create a black image, a window
    img = np.zeros((300,512,3), np.uint8)
    cv2.namedWindow('image')
    
    # create trackbars for color change
    cv2.createTrackbar('R','image',0,255,nothing)
    cv2.createTrackbar('G','image',0,255,nothing)
    cv2.createTrackbar('B','image',0,255,nothing)
    
    # create switch for ON/OFF functionality
    # 轨迹栏的另一个重要应用是将其用作按钮或开关。默认情况下,
    # OpenCV没有按钮功能。因此,可以使用跟踪栏来获得此类功能。
    # 在我们的应用程序中,创建了一个开关,其中应用程序仅在开关打开时
    # 有效,否则屏幕始终为黑色
    
    switch = '0 : OFF \n1 : ON'
    cv2.createTrackbar(switch, 'image',0,1,nothing)
    
    while(1):
        cv2.imshow('image',img)
        k = cv2.waitKey(1) & 0xFF
        if k == 27:
            break
    
        # get current positions of four trackbars
        r = cv2.getTrackbarPos('R','image')
        g = cv2.getTrackbarPos('G','image')
        b = cv2.getTrackbarPos('B','image')
        s = cv2.getTrackbarPos(switch,'image')
    
        if s == 0:
            img[:] = 0
        else:
            img[:] = [b,g,r]
    
    cv2.destroyAllWindows()

    clipboard.png

    打开开关,滑动滑动条

    clipboard.png

    展开全文
  • import cv2 img=cv2.imread("cyanOrange.jpeg",0) _,rst=cv2.threshold(img,127,255,cv2.THRESH_BINARY) cv2.namedWindow('image') def nothing(): pass cv2.createTrackbar('threshhold','image',0,255,nothing) ...
  • python+openCV滑动条的使用

    千次阅读 2019-04-25 17:09:28
    滑动条可以动态调节参数控制图像,达到所需的效果。主要应用函数cv2.creatTrackbar()与函数cv2.getTrackbarPos(),下面详细介绍各函数参数。 1. cv2.creatTrackbar(trackbarName,windowName,value,count,onChange) ...

    滑动条可以动态调节参数控制图像,达到所需的效果。主要应用函数cv2.creatTrackbar()与函数cv2.getTrackbarPos(),下面详细介绍各函数参数。

    1. cv2.creatTrackbar(trackbarName,windowName,value,count,onChange)

    参数:

    • trackbarName:滑动条的名称
    • windowName:所在窗口的名称
    • value:              滑块起始值
    • count:             滑块最大值
    • onChange:      回调函数,即当滑块位置改变时就会调用的函数,并且回调函数第一个参数为滑块位置所对应的值

    2. cv2.getTrackbarPos(trackbarname, winname)

    参数:

    • trackbarname:选择的滑动条名称
    • winname:选择的滑动条所在窗口的名称

    返回值:

    滑块对应位置的值

     

    下面以一个具体案例来实现通过滑动条改变灰度图像亮度的目的。为了对回调函数有一个直观的初理解,现通过两种方式实现效果。

    不使用回调函数,代码如下:

    import cv2
    import numpy as np
    #创建一个(500,500)的numpy数组
    img=np.zeros((500,500),dtype='uint8')
    #新建一个窗口
    cv2.namedWindow('img')
    #定义回调函数,这里pass表示不做任何事,用作占位语句保持程序结构的完整性
    def nothing(x):
        pass
    #新建一个滑动条
    cv2.createTrackbar('intensity','img',0,255,nothing)
    while(1):
        cv2.imshow('img',img)
        #返回滑块所在位置对应的值
        intensity=cv2.getTrackbarPos('intensity','img')
        img[:]=[intensity]
        if cv2.waitKey(1)==ord('q'):
            break
    cv2.destroyAllWindows()

    使用回调函数,代码如下:

    import cv2
    import numpy as np
    #创建一个(500,500)的numpy数组
    img=np.zeros((500,500),dtype='uint8')
    #新建一个窗口
    cv2.namedWindow('img')
    #定义回调函数,参数x为函数cv2.createTrackbar()传递的滑块位置对应的值
    def img_intensity_change(x):
        img[:]=[x]
    #新建一个滑动条
    cv2.createTrackbar('intensity','img',0,255,img_intensity_change)
    while(1):
        cv2.imshow('img',img)
        if cv2.waitKey(1)==ord('q'):
            break
    cv2.destroyAllWindows()

    gif效果如下:

     

    #视频效果欢迎关注我的微信公众号(csdn不会发,所以顺便就打个小广告~~)

    展开全文
  • import numpy as np import cv2 #查询鼠标事件 events=[i for i in dir(cv2) if 'EVENT' in i] print(events) drawing=False mode=True ix,iy=-1,-1 ...def draw_circle(event,x,y,flags,param):...
    import numpy as np
    import cv2
    #查询鼠标事件
    events=[i for i in dir(cv2) if 'EVENT' in i]
    print(events)
    
    drawing=False
    mode=True
    ix,iy=-1,-1
    
    def nothing():
        pass
    
    
    def draw_circle(event,x,y,flags,param):
        r=cv2.getTrackbarPos('R','image')
        g=cv2.getTrackbarPos('G','image')
        b=cv2.getTrackbarPos('B','image')
        color=(b,g,r)
        global ix,iy,drawing,mode
        
        if event== cv2.EVENT_LBUTTONDOWN:
           drawing=True 
           ix,iy=x,y
        elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:
            if drawing==True:
                if mode==True:
                    cv2.rectangle(img,(ix,iy),(x,y),color,3)
                else:
                    cv2.circle(img,(x,y),23,color,-1)
        elif event==cv2.EVENT_LBUTTONUP:
            drawing=False
            
    img=np.zeros((512,512,3),np.uint8) 
    cv2.namedWindow('image')
    cv2.createTrackbar('R','image',0,255,nothing)
    cv2.createTrackbar('G','image',0,255,nothing)
    cv2.createTrackbar('B','image',0,255,nothing)
    cv2.setMouseCallback('image',draw_circle)
    while(1):
        cv2.imshow('image',img)
        k=cv2.waitKey(1)
        if k==ord('m'):
            mode=not mode
        elif k==ord('q'):
            break
        
    cv2.destroyAllWindows()
    
    展开全文
  • 主要介绍了Python OpenCV 使用滑动条来调整函数参数的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 5. Python OpenCV 中滑动条详细说明与常见问题解决方案 滑动条在 OpenCV 相关案例中使用场景非常丰富,很多时候都需要借助于滑动条进行相关参数的获取。 掌握滑动条,只需要掌握 cv2.createTrackbar 与 cv2....

    本系列专栏写作方式

    本系列专栏写作将采用首创的问答式写作形式,快速让你学习到 OpenCV 的初级、中级、高级知识。

    5. Python OpenCV 中滑动条详细说明与常见问题解决方案

    滑动条在 OpenCV 相关案例中使用场景非常丰富,很多时候都需要借助于滑动条进行相关参数的获取。

    掌握滑动条,只需要掌握 cv2.createTrackbarcv2.getTrackbarPos 两个函数即可。

    以上两个函数的原型,可以直接通过 help 函数查阅,本系列专栏对于函数原型只做简单说明

    createTrackbar(trackbarName, windowName, value, count, onChange) -> None
    getTrackbarPos(trackbarname, winname) -> retval
    

    其中 cv2.createTrackbar 函数参数丰富一些,cv2.getTrackbarPos 函数是其子级。

    接下来通过一个简单的案例,实现滑动条的基本应用,拖动改变窗口中某矩形的颜色。

    import cv2
    import numpy as np
    
    cv2.namedWindow("Trackbar_Demo", cv2.WINDOW_NORMAL)
    
    # 为了在滑动条中参数位置进行占位
    
    
    def nothing():
        pass
    
    
    ret = np.zeros([512, 512, 3], np.uint8)
    # 创建一个滑动条
    cv2.createTrackbar("color_green", "Trackbar_Demo", 0, 255, nothing)
    
    while 1:
        # 获取滑动条的取值
        color_green = cv2.getTrackbarPos("color_green", "Trackbar_Demo")
        cv2.rectangle(ret, (100, 100), (200, 200), (0, color_green, 0), -1)
        cv2.imshow("Trackbar_Demo", ret)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    cv2.destroyAllWindows()
    

    如果在代码编写过程中出现了如下 BUG,缺少参数:

    TypeError: function takes exactly 5 arguments (4 given)
    

    该 BUG 表示 cv2.createTrackbar 函数中缺少了最后一个 onChange 参数,添加该参数即可,参数指向的函数体可以为空。

    代码运行之后的动图效果如下:

    cv2.createTrackbar 函数中 onChange 参数相关问题解决方案

    在互联网上所有的中文资料中进行检索,会发现有一个知识点在 cv2.createTrackbar 函数的应用中经常被忽略,这个内容就是 onChange 参数,该参数的官方说明如下:

    Pointer to the function to be called every time the slider changes position. This function should be prototyped as void Foo(int,void*); , where the first parameter is the trackbar position and the second parameter is the user data (see the next parameter). If the callback is the NULL pointer, no callbacks are called, but only value is updated.

    这里要注意一个细节的地方,在 OpenCV C++ 编写的时候,这个函数里面多一个参数,叫做 userdata ,也就是说 C++ 中此函数的原型如下:

    int createTrackbar(const String& trackbarname, const String& winname, int* value, int count, TrackbarCallback onChange=0, void* userdata=0)
    

    但是 Python 对其进行了整合,通过一个参数完成两个数据值的操作,这样其实我们在进行每一次拖动滑动条的时候,都可以对其进行相应的操作。

    修改代码如下,篇幅关系,只修改 nothing 函数部分,运行代码会出现下图所示内容:

    # 滑动条每步的回调函数
    def nothing(x):
        print("滑动条进行操作")
        print(x)
    

    甚至我可以直接调整代码逻辑,将绘制矩形的操作放到滚动条的回调函数中,具体代码与说明如下:

    import cv2
    import numpy as np
    
    cv2.namedWindow("Trackbar_Demo", cv2.WINDOW_NORMAL)
    
    # 滑动条每步的回调函数
    def nothing(x):
        print("滑动条进行操作")
        cv2.rectangle(ret, (100, 100), (200, 200), (0, x, 0), -1)
    
    
    ret = np.zeros([512, 512, 3], np.uint8)
    # 创建一个滑动条
    cv2.createTrackbar("color_green", "Trackbar_Demo", 0, 255, nothing)
    
    
    # color_green = cv2.getTrackbarPos("color_green", "Trackbar_Demo")
    while True:
        cv2.imshow("Trackbar_Demo", ret)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    cv2.destroyAllWindows()
    

    这种逻辑具备之后,我们就可以将滑动条设计成一个开关,拖动到不同值,可以呈现不同的效果。

    更多细节,可以继续取阅读手册相关内容,访问地址

    OpenCV 中拆分滑动条与图片窗口

    在实际编码过程中,建议将滑动条窗口与图片窗口进行拆分展示,便于调整各参数。

    例如下面一个手动调参实现二值化的操作(后续文章会涉及到)。

    import cv2
    import numpy as np
    
    
    def nothing(a):
        pass
    
    
    cv2.namedWindow("HSV",cv2.WINDOW_AUTOSIZE)
    
    cv2.createTrackbar("HUE Min", "HSV", 0, 255, nothing)
    cv2.createTrackbar("HUE Max", "HSV", 180, 255, nothing)
    cv2.createTrackbar("SAT Min", "HSV", 255, 255, nothing)
    cv2.createTrackbar("SAT Max", "HSV", 43, 255, nothing)
    cv2.createTrackbar("VALUE Min", "HSV", 255, 255, nothing)
    cv2.createTrackbar("VALUE Max", "HSV", 46, 255, nothing)
    
    while True:
    
        img = cv2.imread("./t1.jpg")
        imgHsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
        h_min = cv2.getTrackbarPos("HUE Min", "HSV")
        h_max = cv2.getTrackbarPos("HUE Max", "HSV")
        s_min = cv2.getTrackbarPos("SAT Min", "HSV")
        s_max = cv2.getTrackbarPos("SAT Max", "HSV")
        v_min = cv2.getTrackbarPos("VALUE Min", "HSV")
        v_max = cv2.getTrackbarPos("VALUE Max", "HSV")
    
        lower = np.array([h_min, s_min, v_min])
        upper = np.array([h_max, s_max, v_max])
        mask = cv2.inRange(imgHsv, lower, upper)
        result = cv2.bitwise_and(img, img, mask=mask)
    
        mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
        hStack = np.hstack([img, mask, result])
        cv2.imshow('Horizontal Stacking', hStack)
        if cv2.waitKey(1) & 0xFF == 27:
            break
    
    
    cv2.destroyAllWindows()
    

    以上代码运行之后,会呈现一种非常便捷的操作,拖动一个窗口,在另一个窗口中可以动态的呈现对应变化。

    这个地方编码的时候有一个注意事项,即 cv2.namedWindow(“HSV”, cv2.WINDOW_AUTOSIZE) 函数部分,请使用 cv2.WINDOW_AUTOSIZE 值,如果不使用该值,很容易造成滑动条窗口乱版的情况,或者窗口参数分布不均匀情况。

    最后再次强调滑动条的另一个作用,转换按钮。毕竟在 OpenCV 中不存在按钮函数,使用带有固定值的滑动条可以有效的解决该问题。

    使用代码如下所示即可:

    cv2.createTrackbar(switch,'image',0,1,nothing)
    果不使用该值,很容易造成滑动条窗口乱版的情况,或者窗口参数分布不均匀情况。
    
    最后再次强调滑动条的另一个作用,转换按钮。毕竟在 OpenCV 中不存在按钮函数,使用带有固定值的滑动条可以有效的解决该问题。
    
    使用代码如下所示即可:
    
    ```python
    cv2.createTrackbar(switch,'image',0,1,nothing)
    
    展开全文
  • 创建一个简单的程序来说明滑动条用法:通过调节滑动条来设定画板颜色。 我们要创建一个窗口来显示显色,还有三个滑动条来设置B,G,R 的颜色。 当我们滑动滚动条是窗口的颜色也会发生相应改变。 默认情况下窗口的...
  • Python动态调节参数-滑动条-pygame和cv2

    千次阅读 2020-06-10 11:06:29
    Python动态调节参数-滑动条-pygame和cv2 文章目录Python动态调节参数-滑动条-pygame和cv2前言:OpenCV的垃圾实现:pygame 动态调参: 前言: 最近在整动态调参,然后每次修改参数,重启启动程序过于复杂,因此,结合...
  • 主要通过cv2.getTrackbarPos(), cv2.creatTrackbar()两个函数来获取滑动条位置和创建滑动条。 cv2.getTrackbarPos()函数有五个参数 —————————————————— 第一个参数是 滑动条的名字 第二个参数是...
  • createTrackbar() 这个函数用于创建一个可以调整数值的滑动条,并将滑动条附加到指定的窗口上。 滑动条(Trackbar)是一种可以动态调节参数的工具,它依附于窗口而存在。 函数参数: def createTrackbar...
  • python-opencv滑动条的使用 - 目标:创建滑动条,把滑动条绑定到opencv窗口 - 主要函数:cv2.getTrackbarPos();cv2.creatTrackbar() - 示例:我们创建一个窗口和一个滑动条,通过滑动条来改变窗口的颜色。先介绍...
  • matlab滑动条码DMitch列表:Python,数据分析和ML资源 与python中的数据分析相关的链接的精选列表 话题 选定库的URL -NumPy是使用Python进行科学计算的基本软件包。 -SciPy(发音为“ Sigh Pie”)是基于Python的...
  • OpenCV 滑动条Trackbar C/C++/Python

    千次阅读 2017-04-08 16:03:50
    OpenCV 滑动条Trackbar C/C++/Python参考:opencv 滑动条 cvCreateTrackbar():http://blog.csdn.net/u012005313/article/details/46788445 createTrackbar:...
  • 0) img_original=cv2.resize(img_original,(0,0),fx=0.3,fy=0.3) #初始化阈值,定义全局变量imgs thresh=130 imgs=0 #创建滑动条回调函数,参数thresh为滑动条对应位置的数值 def threshold_segmentation(thresh): #...
  • import cv2 import numpy as np def nothing(x): pass ...img = np.zeros((640,480,3),np.uint8) ...cv2.createTrackbar('R','img',0,255,nothing) cv2.createTrackbar('G','img',0,255,nothing) ...
  • 默认值为0,指向回调函数,每次滑动条的滑动都会调用回调函数 参数6 默认值为0,用户传给回调函数的数据值 函数cv2.getTrackbarPos() 参数1 滑动条名称 参数2 窗口名称   ...
  • ON’ cv2.createTrackbar(switch,‘image’,0,1,nothing) 用滑动条代替开关按钮,只有在1(ON)的时候滑动其他颜色滑动条才有用,否则为黑色 r=cv2.getTrackbarPos(‘R’,‘image’) 得到滑动条的数值,'R‘滑动条名字...
  • 滑动条(Trackbar)是一种可以动态调节参数的工具,它依附于窗口而存在。由于OpenCV中没有“按钮”功能,我们还可以用仅含0/1的滑动条来实现按钮的按下和弹起(开启和关闭)效果。 createTrackbar函数用于创建一个...
  • 通过调节滑动条来设定画板颜色。我们 要创建一个窗口来显示显色,还有三个滑动条来设置 B,G,R 的颜色。当我们 滑动滚动条是窗口的颜色也会发生相应改变。默认情况下窗口的起始颜色为黑。 cv2.getTrackbarPos() ...
  • 学会把滑动条绑定到 OpenCV 的窗口 你将会学习这些函数:cv2.getTrackbarPos(),cv2.creatTrackbar()等。 8.1 代码示例 现在我们来创建一个简单的程序:通过调节滑动条来设定画板颜色。我们要创建一个窗口来显示...
  • OpenCV-Python 中文教程4——用滑动条做调色板目标• 学会把滑动条绑定到 OpenCV 的窗口• 你将会学习这些函数:cv2.getTrackbarPos(), cv2.creatTrackbar()等。 1、示例代码 现在我们来创建一个简单的程序:通过...
  • OpenCV-Python Gui模块主要是实现一些图形用户接口,例如创建窗口显示图像、画图、鼠标事件、滑动条等。
  • 8 用滑动条做调色板 目标  • 学会把滑动条绑定到 OpenCV 的窗口  • 你将会学习这些函数:cv2.getTrackbarPos(),cv2.creatTrackbar()等。 8.1 代码示例  现在我们来创建一个简单的程序:通过调节滑动条来设定...
  • 文章目录ROI创建滑动条得到当前滑动条的轨迹结果思考代码参考文献 ROI ROI(region of interest),即感兴趣的区域。 创建滑动条 cv.createTrackbar('Y','Fourpeople',0,Fourpeople.shape[0]-roi[0],nothing) 这句...
  • QSlider滑块部件提供垂直或水平滑动条滑动条移动时,滑块所在的位置会转换为对应的数值。 QSlider本身的功能很少,大部分功能都从QAbstractSlider中继承,关于QAbstractSlider的功能请参考《PyQt(P...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,098
精华内容 5,239
关键字:

python滑动条

python 订阅