OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
图像算术运算

目标

  • 学习图像上的一些算术运算,如加法、减法、位运算等。
  • 您将学习这些函数:cv.add()cv.subtract() 等。

图像加法

您可以使用 OpenCV 函数 cv.add() 添加两张图像。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() 减去两张图像。res = img1 - img2。两张图像应具有相同的深度和类型。请注意,当与 RGBA 图像一起使用时,也会减去 alpha 通道。

例如,考虑以下示例

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();

位运算

这包括按位与、或、非和异或运算。在提取图像的任何部分、定义和处理非矩形 ROI 等时,它们将非常有用。下面我们将看到一个关于如何更改图像特定区域的示例。

我想将 OpenCV 徽标放在图像上方。如果我添加两张图像,它会改变颜色。如果我混合它,我会得到透明效果。但我希望它是完全不透明的。如果它是一个矩形区域,我可以像上一章那样使用 ROI。但 OpenCV 徽标不是矩形形状。所以你可以用位运算来做到这一点。

试试看