python+openCV滑动条的使用

滑动条可以动态调节参数控制图像,达到所需的效果。主要应用函数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不会发,所以顺便就打个小广告~~)

发布了29 篇原创文章 · 获赞 26 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42216109/article/details/89519818