OpenCV 完整例程16. 不同尺寸的图像加法
Posted Python小白进阶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV 完整例程16. 不同尺寸的图像加法相关的知识,希望对你有一定的参考价值。
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)
需要说明的是,对不同尺寸的图像叠加可以有不同的理解和处理。本例程是将小图叠加到大图的指定位置,运行结果如下图所示。
以上是关于OpenCV 完整例程16. 不同尺寸的图像加法的主要内容,如果未能解决你的问题,请参考以下文章