- 1. 相关函数
- 2. 单个滑动条
- 3. 多个滑动条
- 4. 参考资料
- createTrackbar
// 创建一个滑动条并将其附加到指定的窗口 int cv::createTrackbar(const String & trackbarname, // 滑动条名称 const String & winname, // 窗口名称 int * value, // 滑动条初始位置 int count, // 滑动条最大值 TrackbarCallback onChange = 0, // 回调函数 void * userdata = 0)
- getTrackbarPos
// 获取特定滑动条的当前滑动块位置 int cv::createTrackbar(const String & trackbarname, // 滑动条名称 const String & winname) // 窗口名称2. 单个滑动条
线性叠加两张图像:
import cv2
max_alpha = 100
window_name = 'Linear blend'
src1 = cv2.imread('1.jpg')
src2 = cv2.imread('2.jpg')
# 回调函数
def update_alpha(x):
alpha = x / max_alpha
beta = 1.0 - alpha
dst = cv2.addWeighted(cv2.resize(src1, (330,186)), alpha, src2, beta, 0)
cv2.imshow(window_name, dst)
cv2.namedWindow(window_name)
cv2.createTrackbar('Alpha', window_name, 0, max_alpha, update_alpha)
cv2.waitKey(0)
3. 多个滑动条
改变图像对比度和亮度:
import cv2
import numpy as np
# 单个回调函数无法同时获取两个Trackbar的滑动块位置,定义一个返回pass的回调函数即可
def nothing(x):
pass
window_name = 'contrast_brightness'
image = cv2.imread('2.jpg')
cv2.imshow('Original image', image)
cv2.namedWindow(window_name)
cv2.createTrackbar('contrast', window_name, 0, 300, nothing)
cv2.createTrackbar('brightness', window_name, 0, 255, nothing)
while True:
# 使用getTrackbarPos函数分别获取对比度和亮度值
contrast = cv2.getTrackbarPos('contrast', window_name)
brightness = cv2.getTrackbarPos('brightness', window_name)
new_image = cv2.convertScaleAbs(image, contrast*0.01, brightness)
cv2.imshow(window_name, new_image)
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
4. 参考资料
https://docs.opencv.org/4.x/d9/dc8/tutorial_py_trackbar.html



