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

次のチュートリアル: GDAL を使った地理空間ラスタファイルの読み込み

原著者Ana Huamán
互換性OpenCV >= 3.0
  • 前のチュートリアル(OpenCV を使った2枚の画像の加算(ブレンド)画像のコントラストと明るさの変更!について)では、プログラムに \(\alpha\) や \(beta\) などの入力を与える必要があることに気づいたかもしれない。これらはターミナルからデータを入力することで実現していた。
  • さて、いくつかの洗練された GUI ツールを使うときが来た。OpenCV はいくつかの GUI ユーティリティ(highgui モジュール)を提供している。その一例が Trackbar である。
  • このチュートリアルでは、トラックバーから入力情報を取得するように、前の2つのプログラムを少し変更するだけである。

目標

このチュートリアルでは、以下の方法を学ぶ:

  • cv::createTrackbar を使って OpenCV ウィンドウにトラックバーを追加する

コード

チュートリアルOpenCV を使った2枚の画像の加算(ブレンド)で作成したプログラムを変更しよう。トラックバーを使って、ユーザに \(\alpha\) の値を入力させるようにする。

解説

トラックバーに関連するコードのみを解析する:

  • まず、ブレンドする2枚の画像を読み込む。
  • トラックバーを作成するには、まずそれを配置するウィンドウを作成しなければならない。すなわち:
  • これでトラックバーを作成できる:

次の点に注意する(C++ コード):

  • このトラックバーには TrackbarName というラベルが付いている
  • トラックバーは Linear Blend という名前のウィンドウに配置される
  • トラックバーの値は \(0\) から alpha_slider_max までの範囲になる(最小値は常にゼロである)。
  • トラックバーの数値は alpha_slider に格納される
  • ユーザがトラックバーを動かすたびに、コールバック関数 on_trackbar が呼び出される

最後に、C++ と Python のコードではコールバック関数 on_trackbar を定義し、Java では匿名内部クラスのリスナーを使う必要がある

次の点に注意する(C++ コード):

  • alpha の double 値を得るために、alpha_slider の値(整数)を使う。
  • alpha_slider は、ユーザがトラックバーを移動させるたびに更新される。
  • src1src2distalphaalpha_sliderbeta をグローバル変数として定義し、どこからでも使えるようにする。

結果

  • このプログラムは次の出力を生成する:
  • 練習として、画像のコントラストと明るさの変更!で作成したプログラムに2つのトラックバーを追加することもできる。1つは \(\alpha\) を設定するトラックバー、もう1つは \(\beta\) を設定するトラックバーである。出力は次のようになるだろう: