OpenCV-Python:图像的算数操作

介绍在OpenCV中图像的算数操作:加、减、按位操作等。

图像加法

可以用cv2.add()函数对两个图像进行相加操作,也可以用NumPy:res = img1 + img2。相加的两个图片必须是同一类型,或有一个图片有一个channel。

示例代码如下:

Screen Shot 2015-12-28 at 10.59.32

使用OpenCV函数,相加的值大于255,截断为255;使用numpy,相加的值大于255,求模。从上图可以看出,cv2.add()函数提供了更好的输出结果。

图像融合(Blending)

这也是图像的加法,但是它可以指定相加图像的权重,可以得到一个透明的效果。数学公式如下:

addweigt

a取值范围0->1。

下面我们使用cv2.addWeighted()函数把两个图片融合在一起。第一张图片的权重为0.7,第二张图片0.3。它执行的计算如下:

bd72047b3ae8eb9a46fcfc3c7293a05ec8c1e62f

Screen Shot 2015-12-28 at 11.20.39

图像位操作

位操作包括与(and)或(or)非(not)和异或(xor)。它在提取图像的任意部分,处理非长方形图像时很有用。下面我们看一个例子:怎么操作一个图像的特定区域。

Screen Shot 2015-12-28 at 11.42.58

我们怎么把上面的OpenCV logo(去掉黑色背景)放倒另一个图像中呢?如果把两个图片相加,会改变原图像的颜色;如果融合,会得到透明效果;在前面我们使用过ROI,它会把整张图片复制过去,而我们只想复制logo;

使用位操作,代码:

Screen Shot 2015-12-28 at 12.14.04

左边的小图是使用的mask。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注