【翻譯:OpenCV-Python教程】把拖動條當做調色板

⚠️這個系列是自己瞎翻的,文法很醜,跳着跳着撿重要的部分翻,翻錯了不負責,就這樣。

⚠️基於3.4.3,Trackbar as the Color Palette,原文

目標 

示例代碼 

這裏我們會創建一個應用,用來顯示你指定的顏色。你有一個用於顯示顏色的窗口,以及三個拖動條用來表示 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()

應用的截屏看起來像下面這樣的:

trackbar_screenshot.jpg

 

練習 

  • 用拖動條控制,做一個可調整的顏色,和一個可調整半徑的畫筆來做一個畫圖應用程序。畫圖的話,參考上節提到的的鼠標控制事件。

上篇:【翻譯:OpenCV-Python教程】把鼠標當做一個畫筆

下篇:【翻譯:OpenCV-Python教程】圖像基本操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章