视频在线观看网站怎么建设,微信小程序cms系统,一些js特效的网站推荐,做农产品交易网站【Python/Opencv】图像权重加法函数#xff1a;cv2.addWeighted()详解 文章目录【Python/Opencv】图像权重加法函数#xff1a;cv2.addWeighted()详解1. 介绍2. API3. 代码示例与效果3.1 代码3.2 效果4. 参考1. 介绍
在OpenCV图像加法cv2.add函数详解详细介绍了图像的加法运…【Python/Opencv】图像权重加法函数cv2.addWeighted()详解 文章目录【Python/Opencv】图像权重加法函数cv2.addWeighted()详解1. 介绍2. API3. 代码示例与效果3.1 代码3.2 效果4. 参考1. 介绍
在OpenCV图像加法cv2.add函数详解详细介绍了图像的加法运算。
除了这种加法外OpenCV还提供了带权重的加法即两副图像的像素通道值相加时各自按一定的权重比例取值来相加。
假设有2个图像矩阵src1和src2在两个图像融合时各自的权重分别为alpha和beta则二者融合后的目标图像dst中各像素通道值的计算公式为
dst(I)saturate(src1(I)∗alphasrc2(I)∗betagamma)上述公式中两副图像的权重alpha和beta取值没有强制要求但一般情况建议alphabeta1。实际上alpha、beta和src1、src2相乘就是调整的src1、src2对应图像的明暗度因此图像融合权重加法实际上是先各自调整两副图像的明暗度之后再相加。
2. API
import cv2
out cv2.addWeighted(src1, alpha, src2, beta, gamma, dstNone, dtypeNone)参数说明 src1, src2需要融合相加的两副大小和通道数相等的图像alphasrc1的权重betasrc2的权重gammagamma修正系数不需要修正设置为0具体请参考《图像处理gamma修正伽马γ校正的原理和实现算法》dst可选参数输出结果保存的变量默认值为None如果为非None输出图像保存到dst对应实参中其大小和通道数与输入图像相同图像的深度即图像像素的位数由dtype参数或输入图像确认dtype可选参数输出图像数组的深度即图像单个像素值的位数如RGB用三个字节表示则为24位选默认值None表示与源图像保持一致。 返回值 out融合相加的结果图像
3. 代码示例与效果
addWeighted只能实现两副相同大小的图像融合相加可能我们更需要的是一副小图像和一副大图像的融合相加。在本案例中就实现这样一个函数
def addWeightedSmallImgToLargeImg(largeImg, alpha, smallImg, beta, gamma0.0, regionTopLeftPos(0,0)):srcW, srcH largeImg.shape[1::-1]refW, refH smallImg.shape[1::-1]x,y regionTopLeftPosif (refWsrcW) or (refHsrcH):#raise ValueError(img2s size must less than or equal to img1)raise ValueError(fimg2s size {smallImg.shape[1::-1]} must less than or equal to img1s size {largeImg.shape[1::-1]})else:if (xrefW)srcW:x srcW-refWif (yrefH)srcH:y srcH-refHdestImg np.array(largeImg)tmpSrcImg destImg[y:yrefH,x:xrefW]tmpImg cv2.addWeighted(tmpSrcImg, alpha, smallImg, beta,gamma)destImg[y:y refH, x:x refW] tmpImgreturn destImg该函数的前5个参数与addWeighted对应但多了个regionTopLeftPos参数用于指定小图像左上角放置到大图像的具体位置缺省为大图像的左上角。
下面使用addWeightedSmallImgToLargeImg来实现一个两副图像融合的案例。 案例中使用的大图像如下大小550620 案例中使用的小图像如下大小300400
3.1 代码
import numpy as np
import cv2img1 cv2.imread(ra.jpg)
img2 cv2.imread(rb.jpg)
img addWeightedSmallImgToLargeImg(img1, 1, img2, 0.6,regionTopLeftPos(100, 100))
cv2.imwrite(result.jpg, img)
3.2 效果 4. 参考
【1】https://blog.csdn.net/LaoYuanPython/article/details/109143281