OpenCV-Python Tutorials
https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html
图像叠加(融合)
主要函数
被叠加的两张图片的大小、类型(高度/宽度/通道数)必须相同。 但是如果这两张图片大小不相同,有什么方法解决?具体解决方法请点击此处查看
cv2.add(img1,img2)
:直接对两张图片作加法运算
Numpy中可以直接用res = img1 + img2
相加,但这两者的结果并不相同,因为OpenCV中的加法运算是饱和运算(就是当运算结果大于一个上限或小于一个下限时,结果就等于上限或是下限。),而Numpy中的加法运算是取模运算。
如下面代码中cv2.add(x,y)
运行结果为[[255]],是因为250+10 = 260 >= 255
,所以结果就等于上限255,x+y
运行结果为[4],是因为250+10 = 260 mod 255 = 4
。
OpenCV的结果会更好,所以最好使用OpenCV中的函数
from imutils import *
import os
os.chdir('D:/BaiduYunDownload/')
img1 = imread('image1.jpg')
img2 = imread('image2.jpg')
show(img1)
show(img2)
x = np.uint8([250])
y = np.uint8([10])
print(cv2.add(x,y)) #运行结果为[[255]]
print(x+y) #运行结果为[4]
res = img1 + img2
show(res)#显示使用数组加法后的图片
add = cv2.add(img1,img2)
show(add)#显示使用OpenCV中add函数的图片
想了解上面代码中的
from imutils import *
点击此处
cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])
:也是一种图片相加的操作,可以实现两张图片的线性融合。
- src1 – 输入图片1
- alpha – 图像1的加权系数(融合比例)
- src2 – 输入图像2,必须与图片1的大小、类型(