在利用opencv进行图像处理的过程中,很多时候需要对两张图像混合,或者为其中一张图像加上一个LOGO等操作。
在opencv中的addWeight函数提供了很好的处理方法:
addWeighted()
dst = cv2.addWeighted(src1, alpha, src2, beta, gamma,dst,dtype)
其中src1和src2是输入图像数组,而alpha,beta是执行加权加法时要考虑的相应权重。gamma是静态权重,将被添加到图像的所有像素中
dst和dtype默认值未None
addWeighted()函数返回包含结果图像像素值的numpy数组, 其原理可以由如下公式描述:
dst = scr1*alpha + scr2*beta + gamma
示例1:使用addWeighted融合两个图像
我们将拍摄两张图像,并将它们的alpha和beta值相加0.5进行混合:
import cv2
# read two images
src1 = cv2.imread('./image1.png', cv2.IMREAD_COLOR)
src2 = cv2.imread('./image2.png', cv2.IMREAD_COLOR)
# add or blend the images
dst = cv2.addWeighted(src1, 0.5, src2, 0.5, 0.0)
# save the output image
cv2.imwrite('./image.png', dst)
原图1和原图2:
混合后的结果:
示例2:融合两个具有不同权重的图像
我们将使用与先前示例相同的输入图像,但是权重不同。alpha=1,beta=1
import cv2
# read two images
src1 = cv2.imread('./image1.png', cv2.IMREAD_COLOR)
src2 = cv2.imread('./image2.png', cv2.IMREAD_COLOR)
# add or blend the images
dst = cv2.addWeighted(src1, 1, src2, 1, 0.0)
# save the output image
cv2.imwrite('./image.png', dst)
结果如下:
在改变权重后,混合后的效果也发生了明显的变化
扩展问题:
如果是两个图像的分辨率(尺寸)不一致那应该如何处理呢?在此我大概有两个方向:
Resize图像到一致的尺寸进行融合
制定一个ROI,在ROI内进行融合
—–>>>>>
0
相关文章:Python字典dictionary Python中的Dictionary是数据值的无序集合,用于存储数据值(例如映射),与其他仅将单个值作为元素的 […]...
Python中的循环技术 Python通过某些内置函数在各种顺序容器中支持各种循环技术。这些方法在竞争性编程中非常有用,在各种项目中也非 […]...
int上的Python位函数(bit_length,to_bytes和from_bytes) int类型实现number.Integral抽象基类。 1. int.bit_length() 返回表示二进制 […]...
Python中的日历函数 2(monthrange(),prcal(),weekday()…) 日历函数 1中讨论了一些日历函数 1. monthrange(year,month):此函数返回两个整数,第一 […]...
Python | 使用XlsxWriter模块在Excel工作表中绘制面积图 先决条件:在excel文件上创建和写入 XlsxWriter 是一个Python库,使用它可以对excel文件 […]...
Python中生成安全的随机数 secrets模块用于生成管理重要数据的随机数,例如密码,帐户身份验证,安全令牌以及相关密码,这些密码具有较强 […]...
Pandas处理丢失数据 如果没有为一个或多个项目或整个单元提供信息,则可能会发生数据丢失。在现实生活中,数据丢失是一个非常大的问题。缺 […]...
在Python中使用NLTK删除停用词 将数据转换为计算机可以理解的内容的过程称为预处理。预处理的主要形式之一是过滤掉无用的数据。在自然语言处理中,无 […]...