图像处理OpenCV(3)——OpenCV基本操作之算数操作

2.7算数操作

2.7.1图像的加法

可以使用OpenCV的cv.add()函数把两幅图像相加,或者可以简单地通过numpy操作添加两个图像,如res=img1+img2。两个图像应具有相同的大小和类型,或者第二个图像可以是标量值。

注意:

1. OpenCV加法和Numpy加法之间存在差异,OpenCV的加法是饱和操作,而Numpy添加是模运算。

2.相加的图像的大小要保持一致。

参考代码1:

import numpy as np
import cv2 as cv
x= np.uint8([250])
y= np.uint8([10])
print(cv.add(x,y)) # [[255]],250+10=260=>255
print(x+y) # [4]  250+10=260%256=4

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

参考代码2:

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 1.读取图像
img1 = cv.imread('images/holly.jpg')
img2 = cv.imread('images/pool.jpg')

# 2.加法操作
img3 = cv.add(img1,img2)
img4 = img1+img2 #直接相加

# 3.图像显示
fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(10,8),dpi=100)
axes[0].imshow(img3[:,:,::-1])
axes[0].set_title('cv中的加法')
axes[1].imshow(img4[:,:,::-1])
axes[1].set_title('直接相加')
# 设置plt可以显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False
plt.show()

原图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.7.2图像的混合

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

g(x)=(1-α)f0(x)+αf1(x)

通过修改α的值(0->1),可以实现非常nice的组合。

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

dst = α*img1 + β * im2+γ

这里的γ取值为0.

参考代码:

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 1.读取图像
img1 = cv.imread('images/pool.jpg')
img2 = cv.imread('images/holly.jpg')

# 2.图像混合
img3 = cv.addWeighted(img1,0.7,img2,0.3,0)

# 3.图像显示
plt.figure(figsize=(8,8))
plt.imshow(img3[:,:,::-1])
plt.show()

显示效果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值