這篇介紹OPENCV提供的另一個基本工具Trackbar(軌道桿).可以用滑鼠拖拉改變特定的數值.
如下圖,拖拉 R,G,B Trackbar(軌道桿) 即可以更改,RGB顏色,範圍可以設定為0~255之間的數值.
Opencv 並沒有提供如Checkbox 這樣的工具,但是只要將Trackbar(軌道桿) 範圍值成0~1 ,也可以權當如checkbox的功能,當然如果需要更多一些GUI介面的元件,在Python 裡也可以利用別人提供的套件,如Tkinter ,或是PyQT 之類的.也可以跟OPENCV 套件整合在一起由Python實現.這就是Python 語言的便利性.
<圖一>當切換ON/OFF Trackbar(軌道桿) 在ON 位置時, 拉動R,G,B Trackbar(軌道桿)可以及時改變顏色
OPENCV 提供
cv2.createTrackbar function 來實現 Trackbar(軌道桿) ,範例如下
cv2.createTrackbar('R','image',0,255,Change_color)
*1.'R' 為 Trackbar(軌道桿)顯示的名稱
*2.
'image'為 Trackbar(軌道桿)要依附在哪一個windows 視窗,在這裡為名稱
'image'的視窗
*3.
0,255 為拉動桿子的數值變化範圍,在這個範例設定最小0 ,最大為255
*4.
Change_color 為拉動桿子的數值變化後產生事件要執行的副程式,在這個範例副程式為
def
Change_color(x):
<Python 完整範例程式>
import cv2
import numpy as np
def Change_color(x):
# get current positions of four trackbars
r = cv2.getTrackbarPos('R','image')
g = cv2.getTrackbarPos('G','image')
b = cv2.getTrackbarPos('B','image')
s = cv2.getTrackbarPos(switch,'image')
if s == 0:
img[:] = 0
else:
img[:] = [b,g,r]
cv2.imshow('image',img)
# Create a black image, a window
img = np.zeros((240,180,3), np.uint8)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
# create trackbars for color change
cv2.createTrackbar('R','image',0,255,Change_color)
cv2.createTrackbar('G','image',0,255,Change_color)
cv2.createTrackbar('B','image',0,255,Change_color)
# create switch for ON/OFF functionality
switch = '0 : OFF \n1 : ON'
cv2.createTrackbar(switch, 'image',0,1,Change_color)
while(1):
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
加入阿布拉機的3D列印與機器人的FB專頁
https://www.facebook.com/arbu00/