问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OpenCV图像融合神器:cv::addWeighted函数揭秘

创作时间:
作者:
@小白创作中心

OpenCV图像融合神器:cv::addWeighted函数揭秘

引用
CSDN
8
来源
1.
https://blog.csdn.net/qq_26043945/article/details/137039477
2.
https://blog.csdn.net/qq_35037684/article/details/120281223
3.
https://blog.csdn.net/plSong_CSDN/article/details/89045471
4.
https://blog.csdn.net/m0_71212744/article/details/139849129
5.
https://www.cnblogs.com/qq21497936/p/18502043
6.
https://opencv.org/
7.
https://m.runoob.com/opencv/opencv-image-stitching.html
8.
https://www.cnblogs.com/keye/p/18381220

在OpenCV这个强大的开源计算机视觉库中,cv::addWeighted函数堪称图像融合的神器。通过这个函数,你可以轻松地将两张图片按指定权重进行混合,创造出独特的视觉效果。无论是图像叠加还是特效制作,cv::addWeighted都能帮你实现。

函数原理与参数说明

cv::addWeighted函数的基本公式为:
[ dst = \alpha \cdot img1 + \beta \cdot img2 + \gamma ]

其中:

  • img1img2 是要进行融合的两张图像
  • \alpha\beta 分别是两张图像的权重系数
  • \gamma 是一个额外的标量值,通常设置为0

函数的完整参数列表如下:

cv::addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst

关键参数说明:

  • src1src2:输入的两张图像,必须大小相同、通道数相同
  • alphabeta:对应图像的权重
  • gamma:加到最终结果上的标量值
  • dtype:输出图像的数据类型,当输入图像类型相同时,可以设为-1

使用示例

下面是一个简单的Python代码示例,展示了如何使用cv::addWeighted函数将两张图像进行融合:

import cv2

def addImage(img1_path, img2_path):
    img1 = cv2.imread(img1_path)
    img2 = cv2.imread(img2_path)
    
    # 确保两张图像大小相同
    img2 = cv2.resize(img2, (img1.shape[1], img1.shape[0]), interpolation=cv2.INTER_AREA)
    
    # 设置权重参数
    alpha = 0.7
    beta = 0.3
    gamma = 0
    
    # 图像融合
    img_add = cv2.addWeighted(img1, alpha, img2, beta, gamma)
    
    # 显示结果
    cv2.imshow('img_add', img_add)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

# 调用函数
addImage('image1.jpg', 'image2.jpg')

在这个例子中:

  1. 首先读取两张图像
  2. 然后确保它们大小相同(如果不同需要进行resize)
  3. 设置权重参数(这里第一张图像权重为0.7,第二张为0.3)
  4. 调用cv::addWeighted函数进行图像融合
  5. 最后显示融合后的结果

应用场景

cv::addWeighted函数在图像处理中有广泛的应用,包括但不限于:

  • 图像叠加:将一张图像叠加到另一张图像上,常用于添加水印或特效
  • 图像融合:将多张图像按一定比例混合,用于创建过渡效果或合成新图像
  • 特效制作:通过调整权重参数,可以制作出各种图像混合特效

注意事项

使用cv::addWeighted函数时需要注意以下几点:

  1. 输入的两张图像必须大小相同、类型相同
  2. 当输出图像深度为CV_32S时可能会出现问题,需要特别注意
  3. 权重参数\alpha\beta的取值范围一般在0到1之间,且\alpha + \beta的值不应超过1
  4. 如果\gamma参数不为0,可能会对最终结果产生影响,需要谨慎设置

通过掌握cv::addWeighted函数的使用要点,你可以在图像处理项目中轻松实现各种图像融合效果。无论是简单的图像叠加,还是复杂的特效制作,这个函数都能为你提供强大的支持。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号