​获取滑动条当前值​​​​(参数: 滑动条的名字, 滑动条被放置窗口的名字)​r = cv.getTrackbarPos(“R”, “image”)

​trackbarName(滑动条的名字), windowName(滑动条被放置窗口的名字), value(滑动条的默认位置), count(滑动条的最大值), onChange(回调函数)​​​​每次滑动条的滑动都会调用回调函数, 传递的默认参数为滑动条的当前位置​cv.createTrackbar(“R”, “image”, 0, 255, nothing)

import cv2 as cv
import numpy as np

# 创建一个画板,可以自选各种颜色的画笔绘画各种图形.

# 当鼠标按下时变为 True
drawing = False
# 如果mode为true绘制矩形, 按下 'm'变成绘制曲线.
mode = True
ix, iy = -1, -1


def draw(event, x, y, flags, param):
# 获取滑动条当前值
# (参数: 滑动条的名字, 滑动条被放置窗口的名字)
r = cv.getTrackbarPos("R", "image")
g = cv.getTrackbarPos("G", "image")
b = cv.getTrackbarPos("B", "image")
color = (b, g, r)

global ix, iy, drawing, mode

# 当按下左键时返回当前点击位置坐标
if event == cv.EVENT_LBUTTONDOWN:
drawing = True
ix, iy = x, y

# 当鼠标左键按下并移动
elif event == cv.EVENT_MOUSEMOVE and flags == cv.EVENT_FLAG_LBUTTON:
if drawing:
if mode:
cv.rectangle(img, (ix, iy), (x, y), color, -1)
else:
cv.circle(img, (x, y), 3, color, 1)

elif event == cv.EVENT_LBUTTONUP:
drawing = False


# 回调函数
def nothing(val):
# print(val) # val为滑动条当前值
pass

img = cv.imread("./images/Crystal.jpg")
cv.namedWindow("image")

# ( trackbarName(滑动条的名字), windowName(滑动条被放置窗口的名字), value(滑动条的默认位置),
# count(滑动条的最大值), onChange(回调函数) )
# 每次滑动条的滑动都会调用回调函数, 传递的默认参数为滑动条的当前位置
cv.createTrackbar("R", "image", 0, 255, nothing)
cv.createTrackbar('G', 'image', 0, 255, nothing)
cv.createTrackbar('B', 'image', 0, 255, nothing)
cv.setMouseCallback('image', draw)

while True:
cv.imshow("image", img)
k = cv.waitKey(1) & 0xFF
if k == ord("m"):
mode = not mode
elif k == 27:
break

cv.destroyAllWindows()

颜色滑动条_opencv