怎么用python制作滑动条形式的调色器?

2025-10-09 23:36:22

1、先制作一个图像窗口:

import cv2

cv2.namedWindow('a')

怎么用python制作滑动条形式的调色器?

2、在图像窗口里面插入一个滑动条:

def nothing(x):

    pass

cv2.createTrackbar('R','a',99,255,nothing)

这是创建滑动条的函数;

参数“R”表示滑动条的名称;

“a”表示这个滑动条放在图像窗口a里面;

99表示滑动条的当前位置是99;

255表示滑动条的最大值,这个滑动条的取值范围是0到255之间的整数;

nothing是上面创建的自定义函数,暂时什么都不做。

怎么用python制作滑动条形式的调色器?

3、拖动一下滑动条,会发现没变化,这是因为窗口里面还没有图像。

怎么用python制作滑动条形式的调色器?

4、创建一个300*100的黑色img:

img=np.zeros((100,300,3),np.uint8)

注意此时加载了numpy模块;

这是一个3通道的黑色图片,像素值都是0。

怎么用python制作滑动条形式的调色器?

5、但是此时拖动滑块,图像颜色还是没有变化。

因为:

        滑动条的值还没有与图像像素值绑定。

怎么用python制作滑动条形式的调色器?

6、下面把像素值与滑动值绑定:

r=cv2.getTrackbarPos('R','a')

img[:,:,2]=r

cv2.imshow('a',img)

cv2.waitKey(0)

cv2.destroyAllWindows()

注意,cv2里面,默认的红色通道是第三通道,三通道的顺序为B、G、R。

怎么用python制作滑动条形式的调色器?

7、但是,滑块还是无法改变图像颜色。

这是因为,滑动条的值改变了,但是r的值并没有随之而改变,或者说,程序运行没有刷新。

怎么用python制作滑动条形式的调色器?

8、用while循环加上一个switch语句,可以让程序保持随时可以刷新:

switch='0:OFF\n1:ON'

cv2.createTrackbar(switch,'a',0,1,nothing)

#上面这是一个开关(也是滑动条),只有0和1两个值;

while(1):

    cv2.imshow('a',img)

    k=cv2.waitKey(1)&0xFF

    if k==27:

        break

    r=cv2.getTrackbarPos('R','a')

    s=cv2.getTrackbarPos(switch,'a')

    if s==0:

        img[:]=0

    else:

        img[:]=[0,0,r]

打开开关,滑动条才能起作用。

怎么用python制作滑动条形式的调色器?

9、再加上绿色和蓝色滑动条。

注意,img的大小被改了。

怎么用python制作滑动条形式的调色器?

10、整体效果:

怎么用python制作滑动条形式的调色器?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢