Opencv+Python学习记录7:图像加权和(内附详细代码)

一,介绍

所谓图像加权和,就是在计算两幅图像的像素值之和时,将每幅图像的权重考虑进来,可以用公式表示为:
dst=saturate(src1×α+src2×β+γ)
式中,saturate()表示取饱和值(最大值)。图像进行加权和计算时,要求src1和src2必须大小、类型相同,但是对具体是什么类型和通道没有特殊限制。它们可以是任意数据类型,也可以有任意数量的通道(灰度图像或者彩色图像),只要二者相同即可。

OpenCV中提供了函数 cv2.addWeighted(),用来实现图像的加权和(混合、融合),该函数的语法格式为:
dst=cv2.addWeighted(src1,alpha,src2,beta,gamma)
其中,参数alpha和beta是src1和src2所对应的系数,它们的和可以等于1,也可以不等于1。该函数实现的功能是dst=src1×alpha+src2×beta+gamma。需要注意,式中参数gamma的值可以是0,但是该参数是必选参数,不能省略。可以将上式理解为”结果图像=图像1×系数1+图像2×系数2+亮度调节量”。

二,示例

下面,我们来看几个例子:

  1. 使用数组演示函数cv2.addWeighted()的使用
import cv2
import numpy as np
img1=np.ones((3,4),dtype=np.uint8)*100
img2=np.ones((3,4),dtype=np.uint8)*10
gamma=3
img3=cv2.addWeighted(img1,0.6,img2,5,gamma)
print(img3)

运行结果如下:

Opencv+Python学习记录7:图像加权和(内附详细代码)

2.使用函数cv2.addWeighted()对两幅图像进行加权混合,观察处理结果

import cv2
a=cv2.imread("gray1.jpg")
b=cv2.imread("gray3.jpg")
result=cv2.addWeighted(a,0.6,b,0.4,0)
cv2.imshow("gray1",a)
cv2.imshow("gray3",b)
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果如下:

Opencv+Python学习记录7:图像加权和(内附详细代码)

3.使用函数cv2.addWeighted()将一幅图像的ROI混合在另外一幅图像内

import cv2
gray1=cv2.imread("gray1.jpg",cv2.IMREAD_UNCHANGED)
gray3=cv2.imread("gray3.jpg",cv2.IMREAD_UNCHANGED)
cv2.imshow("gray1",gray1)
cv2.imshow("gray3",gray3)
face1=gray1[200:350,150:250]
face3=gray3[0:150,180:280]
add=cv2.addWeighted(face1,0.6,face3,0.4,0)
gray3[0:150,180:280]=add
cv2.imshow("result",gray3)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果如下:

Opencv+Python学习记录7:图像加权和(内附详细代码)

三,用例图片

Opencv+Python学习记录7:图像加权和(内附详细代码)

gray1

Opencv+Python学习记录7:图像加权和(内附详细代码)

gray3

Original: https://blog.csdn.net/qq_53914247/article/details/123685294
Author: Hugh.L
Title: Opencv+Python学习记录7:图像加权和(内附详细代码)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/704412/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球