python+openCV滑动条的使用

本文介绍如何使用OpenCV的滑动条功能动态调整灰度图像亮度。通过cv2.createTrackbar()和cv2.getTrackbarPos()函数,实现图像亮度的实时变化,包括不使用回调函数和使用回调函数两种实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田土豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值