| 
 | 
 
 
函數createTrackbar: 
cv2.createTrackbar(“scale”, “display”, 0, 100, self.opencv_calibration_node.on_scale) 
 
功能: 
綁定滑動條和窗口,定義滾動條的數值 
 
參數 
第一個參數時滑動條的名字, 
第二個參數是滑動條被放置的窗口的名字, 
第三個參數是滑動條默認值, 
第四個參數時滑動條的最大值, 
第五個參數時回調函數,每次滑動都會調用回調函數。 
函數getTrackbarPos: 
cv2.getTrackbarPos() 
 
功能: 
得到滑動條的數值 
 
參數 
第一個參數是滑動條名字, 
第二個時所在窗口, 
返回值是滑動條的數值。 
函數setTrackbarPos: 
cv2.setTrackbarPos('Alpha', 'image', 100) 
 
功能: 
設置滑動條的默認值 
 
參數 
第一個參數是滑動條名字, 
第二個時所在窗口, 
第三個參數是滑動條默認值, 
舉例: 
- import cv2
 
 - import numpy as np
 
 - alpha = 0.3
 
 - beta = 80
 
 - img_path = "2.jpg"
 
 - img = cv2.imread(img_path)
 
 - img2 = cv2.imread(img_path)
 
 - def updateAlpha(x):
 
 -     global alpha, img, img2
 
 -     # 得到数值
 
 -     alpha = cv2.getTrackbarPos('Alpha', 'image')
 
 -     alpha = alpha * 0.01
 
 -     img = np.uint8(np.clip((alpha * img2 + beta), 0, 255))
 
 - def updateBeta(x):
 
 -     global beta, img, img2
 
 -     beta = cv2.getTrackbarPos('Beta', 'image')
 
 -     img = np.uint8(np.clip((alpha * img2 + beta), 0, 255))
 
 - # 创建窗口
 
 - cv2.namedWindow('image')
 
 - cv2.createTrackbar('Alpha', 'image', 0, 300, updateAlpha)
 
 - cv2.createTrackbar('Beta', 'image', 0, 255, updateBeta)
 
 - # 设置默认值
 
 - cv2.setTrackbarPos('Alpha', 'image', 100)
 
 - cv2.setTrackbarPos('Beta', 'image', 10)
 
 - while (True):
 
 -     cv2.imshow('image', img)
 
 -     if cv2.waitKey(1) == ord('q'):
 
 -         break
 
 - cv2.destroyAllWindows()
 
 
  複製代碼 
效果 
Python OpenCV  滑動條 
 
 
 
例子 
- import cv2
 
 - # 图像膨胀
 
 - def img_dilated(d):
 
 -     # 定义 kernel
 
 -     kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (d, d))
 
 -     # 图像膨胀
 
 -     dilated = cv2.dilate(img, kernel)
 
 -     cv2.imshow("myImg", dilated)
 
 - img = cv2.imread('2.jpg')
 
 - cv2.namedWindow('myImg')
 
 - cv2.createTrackbar('d', 'myImg', 1, 30, img_dilated)
 
 - while (1):
 
 -     k = cv2.waitKey(1) & 0xFF
 
 -     #按ESC键退出
 
 -     if k == 27:
 
 -         break
 
 -     d = cv2.getTrackbarPos('d', 'myImg')
 
 - cv2.destroyAllWindows()
 
  複製代碼 
效果 
Python OpenCV  滑動條 
 
 
 
舉例(效果最好): 
- import cv2
 
 - import numpy as np
 
 - # 图像膨胀函数
 
 - def img_dilated(img,d):
 
 -     # 定义 kernel
 
 -     kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (d, d))
 
 -     # 图像膨胀
 
 -     dilated = cv2.dilate(img, kernel)
 
 -     # 返回膨胀图片
 
 -     return dilated
 
 - # 回调函数,因为只能传一个参数,不方便,所以pass
 
 - def nothing(pos):
 
 -     pass
 
 - #读取图片
 
 - img = cv2.imread("2.jpg",1)
 
 - # 创建老窗口
 
 - cv2.namedWindow('OldImg')
 
 - # 绑定老窗口和滑动条(滑动条的数值)
 
 - cv2.createTrackbar('D', 'OldImg', 1, 30, nothing)
 
 - while True:
 
 -     # 提取滑动条的数值d
 
 -     d = cv2.getTrackbarPos('D', 'OldImg')
 
 -     # 滑动条数字传入函数img_dilated中,并且调用函数img_dilated
 
 -     dilated = img_dilated(img, d)
 
 -     # 绑定 img 和 dilated
 
 -     result = np.hstack([img,dilated])
 
 -     cv2.imshow('OldImg', result)
 
 -     # 设置推出键
 
 -     if cv2.waitKey(1) & 0xFF == ord('q'):
 
 -         break
 
 - # 关闭窗口
 
 - cv2.destroyAllWindows()
 
  複製代碼 
效果: 
Python OpenCV  滑動條 
 
 
 
可以比較新老圖片 
 
 
 
 
 |   
 
 
 
 |