OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
OpenCVを使った2枚の画像の加算(ブレンド)

前のチュートリアル: 画像に対する演算
次のチュートリアル: 画像のコントラストと明るさを変える!

原著者Ana Huamán
互換性OpenCV >= 3.0

2枚の画像をブレンドする方法を学ぶ!

目標

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

  • 線形ブレンド (linear blending) とは何か、そしてなぜ有用なのか;
  • addWeighted() を使って2枚の画像を加算する方法

理論

覚え書き
以下の説明は、Richard Szeliski 著の書籍 Computer Vision: Algorithms and Applications によるものである

前回のチュートリアルで、ピクセル演算子 について少し学んだ。興味深い2項(2入力)演算子に 線形ブレンド演算子 がある:

\[g(x) = (1 - \alpha)f_{0}(x) + \alpha f_{1}(x)\]

\(\alpha\) を \(0 \rightarrow 1\) と変化させることで、この演算子は2枚の画像や動画の間で時間的な クロスディゾルブ を行うのに使える。スライドショーや映画製作で見られるものだ(かっこいいだろう?)

ソースコード

解説

次の処理を行うので:

\[g(x) = (1 - \alpha)f_{0}(x) + \alpha f_{1}(x)\]

2枚のソース画像 ( \(f_{0}(x)\) と \(f_{1}(x)\)) が必要だ。そこで、いつもの方法でそれらを読み込む:

次の画像を使用した: LinuxLogo.jpgWindowsLogo.jpg

警告
src1src2加算 するので、両者は同じサイズ(幅と高さ)かつ同じ型でなければならない。

次に g(x) 画像を生成する必要がある。これには addWeighted() 関数が非常に便利だ:

addWeighted() は次を生成するので:

\[dst = \alpha \cdot src1 + \beta \cdot src2 + \gamma\]

この場合、gamma は上のコードでの引数 \(0.0\) である。

ウィンドウを作成し、画像を表示して、ユーザーがプログラムを終了するのを待つ。

結果