OpenCV學習:軌跡條
阿新 • • 發佈:2019-01-10
來自opencv-python官方學習文件,本人謹做翻譯和註釋,以及一些自己的理解
本文由作者翻譯並進行程式碼驗證,轉載請註明出處~
官方文件請參閱:https://docs.opencv.org/4.0.1/db/d5b/tutorial_py_mouse_handling.html
執行環境:
windows 10+pycharm professional 2018.3+python 3.7.1+opencv 4.0.1
目標:
1,學習如何在視窗繫結trackbar
2,學習 cv.getTrackbarPos()和cv.createTrackbar() 函式
案例程式碼:
建立一個視窗,上面有三個軌跡條,分別控制R,G,B的顏色。通過滑動軌跡條來改變顏色。預設情況下,最初的顏色是黑色。
對於cv.getTrackbarPos()函式來講:
第一個引數是:trackbar的名字
第二個引數是:視窗的名字
第三個引數是:預設值
第四個引數是:最大值
第五個引數是:回撥函式,並且當每一次trackbar的位置改變之後都呼叫一次
回撥函式都有一個預設值,就是trackbar的位置
trackbar的另一個功能是作為按鈕或者開關使用。因為OpenCV在預設情況下是沒有這樣的功能的。所以可以通過trackbar來實現這樣的功能。
程式碼如下:
import numpy as np import cv2 as cv def nothing(x): pass # Create a black image, a window img = np.zeros((300,512,3), np.uint8) cv.namedWindow('image') # create trackbars for color change cv.createTrackbar('R','image',0,255,nothing) cv.createTrackbar('G','image',0,255,nothing) cv.createTrackbar('B','image',0,255,nothing) # create switch for ON/OFF functionality switch = '0 : OFF \n1 : ON' cv.createTrackbar(switch, 'image',0,1,nothing) while(1): cv.imshow('image',img) k = cv.waitKey(1) & 0xFF if k == 27: break # get current positions of four trackbars r = cv.getTrackbarPos('R','image') g = cv.getTrackbarPos('G','image') b = cv.getTrackbarPos('B','image') s = cv.getTrackbarPos(switch,'image') if s == 0: img[:] = 0 else: img[:] = [b,g,r] cv.destroyAllWindows()
執行截圖如下: