OpenCVOpenCV Reference

【OpenCV-Python】トラックバー(スライダーバー)

OpenCVのGUIで出来る事は少ないのですが、そのうちの一つのトラックバーの表示です。

トラックバーを使うと、二値化などのしきい値の設定に使うと便利です。

 

トラックバーの使用例

二値化のしきい値にトラックバーを使用

OpenCV トラックバー

サンプルコード

import cv2

# ウィンドウのタイトル
window_title = "Trackbar sample"

# コールバック関数(トラックバーが変更されたときに呼ばれる関数)
def on_trackbar(val):
    if img is not None:
        # 二値化
        ret, dst = cv2.threshold(img, val, 255, cv2.THRESH_BINARY)
        # 画像の表示
        cv2.imshow(window_title, dst)

# ウィンドウの作成
cv2.namedWindow(window_title, cv2.WINDOW_NORMAL)
# トラックバーの作成
cv2.createTrackbar(
    "Threshold",    # トラックバーの名前
    window_title ,  # トラックバーを表示するウィンドウのタイトル
    127,            # 初期値
    255,            # 最大値(最小値は0で固定)
    on_trackbar     # コールバック関数
    )

# 画像の読込
img = cv2.imread("Text.bmp")

# トラックバーの値を取得
track_value = cv2.getTrackbarPos("Threshold", window_title)
# 最初の1回目の処理を取得した値で実行
on_trackbar(track_value)

# キー入力待ち
cv2.waitKey()

createTrackbar()関数

ウィンドウにトラックバーを追加します。

createTrackbar(trackbarName, windowName, value, count, onChange)
引数 説明
trackbarName トラックバーの名前
この文字がトラックバーの左側に表示されます。
windowName トラックバーを追加するウィンドウの名前
value トラックバーの初期値
count トラックバーの最大値
(最小値は設定できず、常に0となります)
onChange コールバック関数
トラックバーが変更された時に呼び出す関数を指定します。

getTrackbarPos()関数

トラックバーの値を取得します。

getTrackbarPos(trackbarname, winname)
引数 説明
trackbarName トラックバーの名前
この文字がトラックバーの左側に表示されます。
windowName トラックバーを追加するウィンドウの名前
戻り値 トラックバーの値

setTrackbarPos()関数

トラックバーの値を設定します。

値を設定すると、コールバック関数も呼び出されます。

setTrackbarPos(trackbarname, winname, pos)
引数 説明
trackbarName トラックバーの名前
この文字がトラックバーの左側に表示されます。
windowName トラックバーを追加するウィンドウの名前
pos 設定するトラックバーの値

参考

OpenCV: Adding a Trackbar to our applications!

関連記事

OpenCVのGUIで出来る事は少ないので、ボタンの表示などをしたい場合は、Tkinterなど別のGUIを使う事をおススメします。

【OpenCV-Python】Tkinter GUI Sample
OpenCVのPython版でもC#のようなウィンドウのGUIプログラムを作りたい! ということで、GUIにTkinterを使って、簡単なサンプルプログラムを作成しました。 ここで公開しているコードは自由に変更して使って頂いてもらって構いま...
【Python/tkinter】Scale(トラックバー、スライダー)
つまみを動かして値を調整できる、C#でいうところのトラックバーは、tkiterでは Scale といいます。 以下にサンプルプログラムを示します。 import tkinter as tk class Application(tk.Fram...

コメント

タイトルとURLをコピーしました