Python OpenCV2:OpenCV 图像算数操作

1. 图像的加法

把两幅图像相加,可以使用OpenCV的add函数,也可以使用NumPy的+操作,比如res = img1 + img2。两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值。

注意:OpenCV加法和NumPy加法是有区别的。OpenCV加法是饱和运算,而NumPy加法是模运算。例如:OpenCV中,某个颜色的值250+10=260会变成饱和的255,而NumPy加法250+10=260,260%256=4,得到4。

cv.add(x,y) 将x和y相加

对两幅图像进行加法时,OpenCV的结果会更好。实际开发过程中,尽量使用OpenCV中的add函数。 

2. 图像的混合

混合其实也是一种加法,但不同的是两张图片的权重不同,给人一种混合的感觉。图像混合的计算公式如下:

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

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

cv.addWeighted(img1, a, img2, b, c)

返回值:

图像 dst = a⋅img1 + b⋅img2 + c

例:将下面两幅图像相加,再把两幅图混合在一起。第一幅图的权重是0.7,第二幅图的权重是0.3。

import cv2 as cv
import matplotlib
from matplotlib import pyplot as plt

font = {
    "family": "Microsoft YaHei"
}
matplotlib.rc("font", **font)

rain = cv.imread("./image/rain.jpg")
view = cv.imread("./image/view.jpg")

img1 = cv.add(rain, view)
plt.imshow(img1[:, :, ::-1])
plt.title("OpenCV add")
plt.show()

img2 = rain + view
plt.imshow(img2[:, :, ::-1])
plt.title("NumPy add")
plt.show()

img3 = cv.addWeighted(view, 0.3, rain, 0.7, 0)
plt.imshow(img3[:, :, ::-1])
plt.title("Weight added")
plt.show()

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hinomoto Oniko

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值