【翻譯】把拖動條當做調色盤
阿新 • • 發佈:2018-12-02
⚠️這個系列是自己瞎翻的,文法很醜,跳著跳著撿重要的部分翻,翻錯了不負責,就這樣。
⚠️基於3.4.3,Trackbar as the Color Palette,附原文。
目標
- 學會繫結一個拖動條在OpenCV視窗上
- 你會學到如下方法 : cv.getTrackbarPos(), cv.createTrackbar() 等等
示例程式碼
這裡我們會建立一個應用,用來顯示你指定的顏色。你有一個用於顯示顏色的視窗,以及三個拖動條用來表示 B,G,R 每一個維度指定的顏色。 你滑動這些拖動條,相對的,視窗的顏色也會改變。預設的顏色會初始化為黑色。
對於 cv.getTrackbarPos() 方法,第一個引數是拖動條的名字,第二個引數指定出拖動條是要附加在哪個視窗上,第三個引數是(這個拖動條)預設的值,第四個引數是拖動條的最大值,第五個引數是每當這個拖動條數值變化時會執行的回撥方法。這個回撥的方法總有一個預設的引數就是這個拖動條的位置,在我們當前情況下,方法什麼都不做,只是簡單的作為引數傳入。
拖動條另一個重要的應用方式是用來做一個按鈕或者開關。在OpenCV裡,預設的沒有功能性的按鈕。所以你可以用拖動條來完成這種功能。在我們的應用裡,我們建立一個開關,只有它開啟時,應用才正常工作否則就讓螢幕永遠是黑色。
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()
應用的截圖看起來像下面這樣的:
練習
- 用拖動條控制,做一個可調整的顏色,和一個可調整半徑的畫筆來做一個畫圖應用程式。畫圖的話,參考上節提到的的滑鼠控制事件。
下篇:【翻譯】影象基本操作