Open cv轨迹条(trackbar)操作

406 阅读1分钟

cv2.getTrackbarPos(),cv2.CreateTrackbar()

cv2.CreateTrackbar()

def CreateTrackbar(trackbarname, winname, default, maximum, callback_function)

Trackbarname:轨迹条的名称

Winname:轨迹条从属的窗口名称

Default:轨迹条默认值,也就是轨迹条不起作用的时候的值

Maximum:轨迹条显示的最大值

callback_function:轨迹条满足某一个值的时候执行的函数,一般这个函数有一个默认的参数就是轨迹条的位置

在open cv里面是没有按键的功能的,所以这个函数就可以充当这个功能。

cv2.getTrackbarPos()

def getTrackbarPos(trackbarname, winname): # real signature unknown; restored from __doc__
"""
getTrackbarPos(trackbarname, winname) -> retval
. @brief Returns the trackbar position.
.
. The function returns the current position of the specified trackbar.
.
. @note
.
. [__Qt Backend Only__] winname can be empty if the trackbar is attached to the control
. panel.
.
. @param trackbarname Name of the trackbar.
. @param winname Name of the window that is the parent of the trackbar.
"""
pass

返回当前的轨迹条的位置,第一个参数是轨迹条的名称,第二个是轨迹条所属的窗口名称

import cv2

import numpy as np

def nothing(x):

pass

#因为函数什么事情不用做,但是又需要一个默认参数,因而传入一个x之后直接pass


img = np.zeros((300,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)

# 创建红、绿、蓝三条轨迹条

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

#展示图片

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()