【Python+OpenCV入門學習】七、軌跡條操作
阿新 • • 發佈:2018-12-15
本篇文章,將學習如何進行軌跡條操作。主要學習函式getTrackbarPos()和createTrackbar()使用。
環境:Windows 7(64) python 3.6 opencv 3.4.2
一、瞭解函式
軌跡條使用起來非常的方便,通過滑鼠滑動軌跡條,可以實時看到效果,在調參時用處很大。
1.1 函式createTrackbar()
函式createTrackbar()的函式形式如下:
int createTrackbar( const String & trackbarname,const String & winname,int * value,int count,TrackbarCallback onChange = 0,void * userdata = 0 )
功能:在指定的視窗建立一個軌跡條。可將變數值與軌跡條關聯,當軌跡條位置改變時就呼叫回撥函式onChange。
引數:
trackbarname:為軌跡條起個名字。
winname:指定在什麼視窗建立軌跡條。
value:指向整數變數的指標,該變數的值反映滑塊的位置。
count:軌跡條可滑動的最大值。 最小值始終為0。
onChange:每次滑塊更改位置時要呼叫的函式。 該函式原型為void Foo(int,void *); ,其中第一個引數是軌跡欄位置,第二個引數是使用者資料(參見下一個引數)。 如果回撥是NULL指標,則不會呼叫任何回撥,但只更新值。預設為0。
userdata:按原樣傳遞給回撥的使用者資料。 它可用於處理軌跡欄事件而無需使用全域性變數。預設為0。
1.2 函式getTrackbarPos()
函式getTrackbarPos()的函式形式如下:
retval = cv.getTrackbarPos(trackbarname, winname)
功能:返回軌跡條當前位置
引數:
trackbarname:軌跡條的名稱。
winname:軌跡條所在的視窗名稱。
二、程式設計實現
用軌跡條實現調色盤。程式碼如下:
import numpy as np import cv2 as cv #回撥函式,什麼都不做 def nothing(x): pass img = np.zeros((300,512,3), np.uint8) cv.namedWindow('image') #建立軌跡條 cv.createTrackbar('R(0~255)','image',0,255,nothing) cv.createTrackbar('G(0~255)','image',0,255,nothing) cv.createTrackbar('B(0~255)','image',0,255,nothing) while(1): cv.imshow('image',img) k = cv.waitKey(1) & 0xFF if k == 27: break #獲得當前軌跡條的值 r = cv.getTrackbarPos('R(0~255)','image') g = cv.getTrackbarPos('G(0~255)','image') b = cv.getTrackbarPos('B(0~255)','image') img[:] = [b,g,r] cv.destroyAllWindows()
程式執行結果圖如下: