程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python-OpenCV使用滑動條動態控制參數

編輯:Python

用opencv時,你一定遇到過手動調參的場景,是不是很麻煩?
我覺得麻煩,用opencv裡面自帶的滑動條動態控制參數,豈不是很香?

1.創建滑動條

cv2.createTrackbar('Threshold', 'image', 0, 255, updateThreshold)
功能:
綁定滑動條和窗口,定義滾動條的數值。
第一個參數是滑動條的名字,
第二個參數是滑動條被放置的窗口的名字,
第三個參數是滑動條默認值,
第四個參數時滑動條的最大值,
第五個參數時回調函數,每次滑動都會調用回調函數

2. 設置滑動條默認值(其實比較雞肋,因為在創建滑動條的時候就可以設置默認值了)

cv2.setTrackbarPos('Threshold', 'image', 80)
第一個參數是滑動條的名字,
第二個參數是滑動條被放置的窗口的名字,
第三個參數是滑動條默認值;

3. 獲取滑動條的值

threshold = cv2.getTrackbarPos('Threshold', 'image')
第一個參數是滑動條的名字,
第二個參數是滑動條被放置的窗口的名字,

4. 設計回調函數

每次修改滑動條的值後,就會觸發回調函數的執行。
回調函數是靈魂,不多說了,看我的例子吧。

5. 完整例子

import cv2
threshold = 80
img_path = r"C:\Users\admin\Desktop\1.jpg"
img = cv2.imread(img_path)
img1 = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
img2 = img1.copy()
# 創建回調函數
def updateThreshold(x):
# global一定要有的,這樣才能修改全局變量
global threshold, img1, img2
# 得到阈值
threshold = cv2.getTrackbarPos('Threshold', 'image')
ret, img1 = cv2.threshold(img2, threshold, 255, 0)
print("threshold:",threshold)
# 創建窗口和滑動條
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.createTrackbar('Threshold', 'image', 0, 255, updateThreshold)
# 設置滑動條默認值
cv2.setTrackbarPos('Threshold', 'image', 80)
# 不斷刷新顯示
while (True):
cv2.imshow('image', img1)
if cv2.waitKey(1) == ord('q'):
break
cv2.destroyAllWindows()

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved