1. 程式人生 > >OpenCV學習:軌跡條

OpenCV學習:軌跡條

來自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()

執行截圖如下: