|
函數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 滑動條
可以比較新老圖片
|
|