专栏地址:『youcans 的 OpenCV 例程 200 篇』
文章目录:『youcans 的 OpenCV 例程200篇 - 总目录』
【youcans 的 OpenCV 例程 200 篇】16. 不同尺寸的图像加法
函数 cv2.add() 用于图像的加法运算, 对两张相同大小和类型的图像进行加法运算,或对一张图像与一个标量进行加法运算。
函数说明:
cv2.add(src1, src2 [, dst[, mask[, dtype]]) → dst
函数 cv2.addWeight() 用于图像的加权加法运算,对两张相同大小和类型的图像按权重相加,可以实现图像的叠加和混合。
函数说明:
cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst
注意事项:
-
使用函数 cv2.add()、cv2.addWeight() 对两张图片相加时,图片的大小和类型(通道数)必须相同。
-
对于不同尺寸的图像加法,将小图叠加到大图的指定位置,可以按扩展例程 1.25 处理。
扩展例程:1.25 不同尺寸的图像加法
# 1.25 不同尺寸的图像加法
imgL = cv2.imread("../images/imgB2.jpg") # 读取大图
imgS = cv2.imread("../images/logoCV.png") # 读取小图 (LOGO)
x,y = 300,50 # 叠放位置
W1, H1 = imgL.shape[1::-1] # 大图尺寸
W2, H2 = imgS.shape[1::-1] # 小图尺寸
if (x + W2) > W1: x = W1 - W2 # 调整图像叠放位置,避免溢出
if (y + H2) > H1: y = H1 - H2
imgCrop = imgL[y:y + H2, x:x + W2] # 裁剪大图,与小图 imgS 的大小相同
imgAdd = cv2.add(imgCrop, imgS) # cv2 加法,裁剪图与小图叠加
alpha, beta, gamma = 0.2, 0.8, 0.0 # 加法权值
imgAddW = cv2.addWeighted(imgCrop, alpha, imgS, beta, gamma) # 加权加法,裁剪图与小图叠加
imgAddM = np.array(imgL)
imgAddM[y:y + H2, x:x + W2] = imgAddW # 用叠加小图替换原图 imgL 的叠放位置
cv2.imshow("imgAdd", imgAdd)
cv2.imshow("imgAddW", imgAddW)
cv2.imshow("imgAddM", imgAddM)
cv2.waitKey(0)
需要说明的是,对不同尺寸的图像叠加可以有不同的理解和处理。本例程是将小图叠加到大图的指定位置,运行结果如下图所示。
(本节完)
【第2章:图像的数值运算】
13. 图像的加法运算(cv2.add)
14. 图像与标量相加(cv2.add)
15. 图像的加权加法(cv2.addWeight)
16. 不同尺寸的图像加法
17. 两张图像的渐变切换
版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18
欢迎关注专栏: 『youcans 的 OpenCV 例程 200 篇』
更多内容请见:>『youcans 的 OpenCV 例程200篇 - 总目录』(https://blog.csdn.net/youcans/article/details/125112487)