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

OpenCV-Python】滑動條Trackbar的創建和使用(createTrackbar())

編輯:Python

OpenCV-Python】滑動條Trackbar的創建和使用(createTrackbar())

一、前言

滑動條(Trackbar)是一種可以動態調節參數的工具,它依附於窗口而存在。可以很明顯的感受到交互,動態調參,針對尋找,rgb區間,hsv區間,等可以調整參數並查看效果的算法,滾動條算是很有用的一項工具

二、核心函數解析

核心函數一共有兩個createTrackbar(),getTrackbarPos()

函數名功能createTrackbar()創建滾動條getTrackbarPos()獲取滾動條當前值

1、createTrackbar() 參數解析

createTrackbar() 這個函數用於創建一個可以調整數值的滑動條,並將滑動條附加到指定的窗口上。

該函數的參數有:
createTrackbar(const String& trackbarname, const String& winname, int *value, int count, TrackbarCallback onChange = 0, void *userdata = 0),具體含義為:

trackbarname:跟蹤欄名稱,創建的軌跡欄的名稱。
Winname:窗口的名字,表示這個軌跡條會依附到哪個窗口上,即對應namedWindow()創建窗口時填的窗口名。
value:指向整數變量的可選指針,該變量的值反映滑塊的初始位置。
count:表示滑塊可以達到的最大位置的值,最小位置始終為0。
onChange:指向每次滑塊更改位置時要調用的函數的指針,有默認值0。此函數的原型應為void XXX (int, void *); ,其中第一個參數是軌跡欄位置,第二個參數是用戶數據(請參閱下一個參數)。如果回調是NULL指針,則不調用任何回調,而僅更新值。
userdata:傳遞給回調的用戶數據,有默認值0。它可以用於處理軌跡欄事件,而無需使用全局變量。

注:如果使用的第三個參數value實參是全局變量或常數的話,完全可以不去管這個userdata參數。
只需要有前四個即可

2、getTrackbarPos() 參數解析

對於 getTrackbarPos() 函數,它也需要多個參數:

第一個參數是Tarckbar 名稱;
第二個參數是它附加到的窗口名稱;
第三個參數是默認值;
第四個參數是最大值;
第五個是執行的回調函數每次跟蹤欄值更改。回調函數始終具有默認參數,即軌跡欄位置。

注:一般情況只需要有前2個即可

三、簡單實戰代碼

在這裡,我們將創建一個簡單的應用程序,以通過滑動軌跡欄顯示指定R,G,G的顏色。默認情況下,初始顏色將設置為黑色,代碼如下:

import cv2 as cv
import numpy as np
cv.namedWindow('image',256)
#滾動條事件,默認為無,不需要其移動事改變什麼
def task():
pass
def demo():
cv.createTrackbar('R','image',0,255,task)
cv.createTrackbar('G','image',0,255,task)
cv.createTrackbar('B','image',0,255,task)
img=np.zeros((640,480,3),np.uint8)
while True:
r=cv.getTrackbarPos('R','image')
g=cv.getTrackbarPos('G','image')
b=cv.getTrackbarPos('B','image')
img[:]=[r,g,b]
cv.imshow('image',img)
if cv.waitKey(1) &0xFF==27:
break
cv.destrayAllWindows()
if __name__=='__main__':
demo()

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