欢迎光临散文网 会员登陆 & 注册

【第七节】OpenCV图像上的算术运算

2022-11-16 18:25 作者:海鸥之道  | 我要投稿

目标

  • 学习图像上的算术运算,加法、减法、位运算等。

  • 学习的而函数有:CV2.add(),CV2.addWeighted()等。

1、图像的加法

           你可以使用函数CV2 .add()将两幅图像进行加法运算,当然也可以直接使.用numpy, res=img1 +img。两幅图像的大小,类型必须-致,或者第二个图像可以使一个简单的标量值。

注意: OpenCV 中的加法与Numpy的加法是有所不同的。OpenCV 的加法是一种饱和操作,而Numpy的加法是一种模操作。

例如下面的两个例子:

        这种差别在你对两幅图像进行加法时会更加明显。OpenCV的结果会更好一点。所以我们尽量使用OpenCV中的函数。

2、图像混合

        这其实也是加法,但是不同的是两幅图像的权重不同,这就给人一种混合或者透明的感觉。图像混合的计算公司如下:

%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20g(x)%20%3D%20(1-%5Calpha%20)f_0(x)%20%2B%5Calpha%20%20f_1(x)

        通过修改α的值(0→1),可以实现非常酷的混合。

        现在我们把两幅图混合在一起。第一幅图的权重是0.7,第二幅图的权重是0.3.函数CV2.addWeighted()可以按下面的公式对图片进行混合操作。

dst%20%3D%20%5Calpha%20%5Ccdot%20img1%20%2B%20%5Cbeta%20%5Ccdot%20img2%20%2B%20%5Cgamma%20

这里γ的取值为0。

注意:需要混合的两个图像像素必须一致。

下面看看结果:

3、按位运算

        这里包括的按位操作有: AND, OR, NOT, XOR等。当我们提取图像的一部分,选择非矩形ROI时这些操作会很有用(下一章你就会明白)。下面的例子就是教给我们如何改变-幅图的特定区域。

        我想把一朵花放到另一幅图像小舞头上。如果我使用加法,颜色会改

变,如果使用混合,会得到透明效果,但是我不想要透明。如果他是矩形我可

以象.上一章那样使用ROI。但是他不是矩形。但是我们可以通过下面的按位运

算实现:

显示效果如下,方便理解,附上两张原图:



【第七节】OpenCV图像上的算术运算的评论 (共 条)

分享到微博请遵守国家法律