【第七节】OpenCV图像上的算术运算
目标
1、图像的加法
你可以使用函数CV2 .add()将两幅图像进行加法运算,当然也可以直接使.用numpy, res=img1 +img。两幅图像的大小,类型必须-致,或者第二个图像可以使一个简单的标量值。
注意: OpenCV 中的加法与Numpy的加法是有所不同的。OpenCV 的加法是一种饱和操作,而Numpy的加法是一种模操作。
例如下面的两个例子:
这种差别在你对两幅图像进行加法时会更加明显。OpenCV的结果会更好一点。所以我们尽量使用OpenCV中的函数。
2、图像混合
这其实也是加法,但是不同的是两幅图像的权重不同,这就给人一种混合或者透明的感觉。图像混合的计算公司如下:
通过修改α的值(0→1),可以实现非常酷的混合。
现在我们把两幅图混合在一起。第一幅图的权重是0.7,第二幅图的权重是0.3.函数CV2.addWeighted()可以按下面的公式对图片进行混合操作。
这里γ的取值为0。
注意:需要混合的两个图像像素必须一致。
下面看看结果:

3、按位运算
这里包括的按位操作有: AND, OR, NOT, XOR等。当我们提取图像的一部分,选择非矩形ROI时这些操作会很有用(下一章你就会明白)。下面的例子就是教给我们如何改变-幅图的特定区域。
我想把一朵花放到另一幅图像小舞头上。如果我使用加法,颜色会改
变,如果使用混合,会得到透明效果,但是我不想要透明。如果他是矩形我可
以象.上一章那样使用ROI。但是他不是矩形。但是我们可以通过下面的按位运
算实现:
显示效果如下,方便理解,附上两张原图:
