OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
カラーパレットとしてのトラックバー

目的

コードデモ

ここでは、指定した色を表示する簡単なアプリケーションを作成する。色を表示するウィンドウと、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
# Create a black image, a window
img = np.zeros((300,512,3), np.uint8)
# 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]
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

演習

  1. トラックバーを使って色とブラシ半径を調整できるペイントアプリケーションを作成せよ。描画については、マウス操作に関する前回のチュートリアルを参照すること。