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

目的

  • HTML DOMのInput Rangeオブジェクトを使ってアプリケーションにトラックバーを追加する。

コードデモ

ここでは、2枚の画像を合成する簡単なアプリケーションを作成する。トラックバーを使ってユーザーに重みを入力させる。

まず、3つのcanvas要素を作成する必要がある。入力用に2つ、出力用に1つである。チュートリアル 画像の基本操作 を参照してほしい。

let src1 = cv.imread('canvasInput1');
let src2 = cv.imread('canvasInput2');

次に、以下に示すように、HTML DOMのInput Rangeオブジェクトを使ってトラックバーを実装する。

覚え書き
type="range" の <input> 要素は、Internet Explorer 9 およびそれ以前のバージョンではサポートされていない。

document.createElement() メソッドを使って type="range" の <input> 要素を作成できる。

let x = document.createElement('INPUT');
x.setAttribute('type', 'range');

getElementById() を使って type="range" の <input> 要素にアクセスできる。

let x = document.getElementById('myRange');

トラックバーとして、range要素にはトラックバー名、デフォルト値、最小値、最大値、ステップ、そしてトラックバーの値が変化するたびに実行されるコールバック関数が必要である。コールバック関数は常にデフォルト引数を持ち、それはトラックバーの位置である。さらに、トラックバーの値を表示するためのテキスト要素を用意するとよい。今回の場合は、以下のようにトラックバーを作成できる。

Weight: <input type="range" id="trackbar" value="50" min="0" max="100" step="1" oninput="callback()">
<input type="text" id="weightValue" size="3" value="50"/>

最後に、コールバック関数内でトラックバーの値を使い、2枚の画像を合成して結果を表示する。

let weightValue = document.getElementById('weightValue');
let trackbar = document.getElementById('trackbar');
weightValue.setAttribute('value', trackbar.value);
let alpha = trackbar.value/trackbar.max;
let beta = ( 1.0 - alpha );
let src1 = cv.imread('canvasInput1');
let src2 = cv.imread('canvasInput2');
let dst = new cv.Mat();
cv.addWeighted( src1, alpha, src2, beta, 0.0, dst, -1);
cv.imshow('canvasOutput', dst);
dst.delete();
src1.delete();
src2.delete();
参照
cv.addWeighted

試してみる