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

目標

  • 加算、減算、ビット演算など、画像に対するいくつかの算術演算を学ぶ。
  • 次の関数を学ぶ:cv.add()cv.subtract() など。

画像の加算

OpenCV の関数 cv.add() で2つの画像を加算できる。res = img1 + img2 となる。両方の画像は同じビット深度および型でなければならない。

例えば、以下のサンプルを考える。

let src1 = cv.imread("canvasInput1");
let src2 = cv.imread("canvasInput2");
let dst = new cv.Mat();
let mask = new cv.Mat();
let dtype = -1;
cv.add(src1, src2, dst, mask, dtype);
src1.delete(); src2.delete(); dst.delete(); mask.delete();

画像の減算

OpenCV の関数 cv.subtract() で2つの画像を減算できる。res = img1 - img2 となる。両方の画像は同じビット深度および型でなければならない。RGBA画像で使用する場合、アルファチャンネルも減算される点に注意すること。

例えば、以下のサンプルを考える。

let src1 = cv.imread("canvasInput1");
let src2 = cv.imread("canvasInput2");
let dst = new cv.Mat();
let mask = new cv.Mat();
let dtype = -1;
cv.subtract(src1, src2, dst, mask, dtype);
src1.delete(); src2.delete(); dst.delete(); mask.delete();

ビット演算

これにはビット単位の AND、OR、NOT、XOR 演算が含まれる。これらは画像の任意の部分を抽出したり、非矩形の ROI を定義して扱ったりする際に非常に役立つ。以下では、画像の特定の領域を変更する方法の例を見る。

画像の上に OpenCV のロゴを配置したい。2つの画像を加算すると色が変わってしまう。ブレンドすると透明な効果になる。しかし、不透明にしたい。もし矩形の領域であれば、前章で行ったように ROI を使える。だが OpenCV のロゴは矩形の形状ではない。そこで、ビット演算で実現できる。

試してみよう