Trackbar是一个可以允许进行拖动的进条,可以通过鼠标控制其对应的值(例如下图三原色)
可以用来控制三原色,但不仅仅用来控制三原色。
一.需要学习两个新的API:
1)createTrackbar(trackbarname, winname, value,count, onChange)用于创建Trackbar插件
trackbarname为创建的trackbar的名字 winname为trackbar创建在对应的窗口上
value为trackbar的默认值(即刚创建trackbar时对应的标点为为多少)
count为bar的最大值,最小值为0
onChange类似于上节课的callback(回调函数),即当拖动bar时数值发生了改变,此时你希望能触发一个函数做的事情
2)getTrackbarPos(trackbarname, winname)用于当拖动trackbar时,获取trackbar的当前值
二.代码展示如下:
cv2.resizeWindow("trackbar", 640, 480) # 设置窗口大小
def callback(value): # 创建回调函数
print(value)
# 创建trackbar对象
cv2.createTrackbar("R", "trackbar", 0, 255, callback)
cv2.createTrackbar("G", "trackbar", 0, 255, callback)
cv2.createTrackbar("B", "trackbar", 0, 255, callback)
# 创建一张黑底图片
img = np.zeros((480, 360, 3), np.uint8)
while True:
r = cv2.getTrackbarPos("R", "trackbar")
g = cv2.getTrackbarPos("G", "trackbar")
b = cv2.getTrackbarPos("B", "trackbar")
# 改变背景颜色
img[:] = [b, g, r]
cv2.imshow("trackbar", img) # 进行展示
key = cv2.waitKey(10)
if key == ord("q"):
break
cv2.destroyAllWindows()
三.运行结果如下:
当改变参数时,会打印对应的value值。
注意点:Pycharm中cv2.createTrackbar会显示不存在,此时忽略直接在其中填入参数即可。