Python OpenCV2:OpenCV 图像算数操作
Posted sxqczzxsh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()
输出:
以上是关于Python OpenCV2:OpenCV 图像算数操作的主要内容,如果未能解决你的问题,请参考以下文章