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 图像算数操作的主要内容,如果未能解决你的问题,请参考以下文章

Python OpenCV2(cv2)包装器获取图像大小?

如何使用 python opencv2 在 Windows 中的图像上写入文本

如何用opencv2.0.0进行图像处理

Python中opencv2 ORB数据结构的深拷贝

在openCV2 Python中绘制convexHull

使用Python+opencv2时的文件命名及路径问题