目的
コードデモ
ここでは、指定した色を表示する簡単なアプリケーションを作成する。色を表示するウィンドウと、B,G,R 各色を指定する3つのトラックバーがある。トラックバーをスライドさせると、それに応じてウィンドウの色が変化する。デフォルトでは、初期色は黒に設定される。
cv.createTrackbar() 関数では、第1引数はトラックバー名、第2引数はそれを取り付けるウィンドウ名、第3引数はデフォルト値、第4引数は最大値、第5引数はトラックバーの値が変化するたびに実行されるコールバック関数である。コールバック関数には常に、トラックバーの位置を表すデフォルト引数が渡される。今回の場合、関数は何もしないので、単に pass する。
トラックバーのもう1つの重要な用途は、ボタンやスイッチとして使うことである。OpenCV にはデフォルトではボタン機能がない。そこで、トラックバーを使ってそのような機能を実現できる。このアプリケーションでは、スイッチがONのときのみ動作し、それ以外では画面が常に黒になるスイッチを1つ作成した。
import numpy as np
import cv2 as cv
def nothing(x):
pass
img = np.zeros((300,512,3), np.uint8)
switch = '0 : OFF \n1 : ON'
while(1):
if k == 27:
break
if s == 0:
img[:] = 0
else:
img[:] = [b,g,r]
int getTrackbarPos(const String &trackbarname, const String &winname)
Returns the trackbar position.
void imshow(const String &winname, InputArray mat)
Displays an image in the specified window.
int waitKey(int delay=0)
Waits for a pressed key.
void namedWindow(const String &winname, int flags=WINDOW_AUTOSIZE)
Creates a window.
void destroyAllWindows()
Destroys all of the HighGUI windows.
int createTrackbar(const String &trackbarname, const String &winname, int *value, int count, TrackbarCallback onChange=0, void *userdata=0)
Creates a trackbar and attaches it to the specified window.
このアプリケーションのスクリーンショットは以下のようになる :
image
演習
- トラックバーを使って色とブラシ半径を調整できるペイントアプリケーションを作成せよ。描画については、マウス操作に関する前回のチュートリアルを参照すること。