一,介绍

所谓图像加权和,就是在计算两幅图像的像素值之和时,将每幅图像的权重考虑进来,可以用公式表示为:

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)

运行结果如下:

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()

运行结果如下:

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()

运行结果如下:

三,用例图片

gray1 

 gray3

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

  1. Python实现逻辑回归实战(完整版)--内附详细代码

    Hello大家!上一篇小A已经详细的为大家讲解了逻辑回归的原理和数学推导,但是对于学习人工智能来说仅仅学会原理是远远不够的,还必须要动手实践,必须要学会使用编程语言将算法实现.所以,今天我就来为大家展 ...

  2. Opencv+Python学习记录9:掩膜(掩码)的使用(内附详细代码)

    一,基本概念 OpenCV中的很多函数都会指定一个掩模,也被称为掩码,例如: 计算结果=cv2.add(参数1,参数2,掩模) 当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的 ...

  3. Opencv+Python学习记录6:图像加法运算(内附详细代码)

    1.加号运算符 使用加号运算符"+"对图像a(像素值为a)和图像b(像素值为b)进行求和运算,遵循以下规则: 式中,mod()是取模运算,"mod(a+b,256)&qu ...

  4. 【五】 C语言基础知识学习回顾 | 一篇搞定C语言基础 | 内附详细代码以及注释

    一 .C语言学习第一天 1.1 编写C语言代码:hello.c #include<stdio.h> #include<stdlib.h> //调用system系统函数需要包含的 ...

  5. hfss和python_利用Python与HFSS联合仿真设计一个微带天线(附详细代码)

    原标题:利用Python与HFSS联合仿真设计一个微带天线(附详细代码) 我们知道HFSS是一款电磁仿真商用软件,用其进行天线的设计十分方便.而该软件也预留了可以运行脚本的接口,使用者可以使用脚本对软 ...

  6. Python学习记录(一)PIL库对于图像操作方法的简单整理

    Python学习记录(一)PIL库对于图像操作方法的简单整理 首先对PIL库进行一个简单的介绍:Python图像库PIL(Python Image Library)是python的第三方图像处理库,由 ...

  7. OpenCV python(二)图像预处理:改变图像大小 提取感兴趣区域

    OpenCV python(二)图像预处理:改变图像大小 && 提取感兴趣区域 一.改变图像大小 1.获取图像宽.高.通道数 2.resize函数 3.案例 二.ROI感兴趣区域 1. ...

  8. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  9. 【Python学习记录】Numpy广播机制(broadcast)

    ✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录 一.什么是Numpy广播机制 二.Numpy广播应用 三.Numpy广播规则 一.什么是Numpy广播机制 在Numpy. ...

最新文章

  1. jQuery 1.10.0 和 2.0.1 发布
  2. ITK:平移一个网格
  3. Oracle 表的连接方式(1)-----Nested loop join和 Sort merge join
  4. spring框架入门day02
  5. 换加密算法--python
  6. 大数据之路之交通大数据应用总体架构设计
  7. c语言-基本计算 pm2.5,pm2.5标准
  8. 程序开发里面的profile 是什么意思? (用户配置文件)
  9. Prefix Sum —— 树状数组+懵逼的组合恒等式
  10. EKL软件历史版本下载地址集合
  11. HTML+JS+websocket 实现联机“游戏王”对战(十三)- 实机演示视频
  12. openssh-7.5p1升级
  13. 华为服务器bmc怎么传文件,华为服务器bmc配置
  14. 服务器共享文件搜索慢的原因,客户端访问服务器共享文件反应很慢.doc
  15. 二进制拆弹实验详解linux,拆解二进制炸弹
  16. html课堂笔记,Day1-课堂笔记-HTML
  17. 三相全桥整流 逆变 matlab,三相桥式有源逆变电路的MATLAB建模仿真
  18. 信安Note_day14
  19. ESP32 ESP-IDF SD(TF)卡保存GPS北斗模块数据
  20. PS的快速入门与使用教程

热门文章

  1. 商城拍卖活动设计方案 瞬时并发高可用
  2. Android:从简历到offer直通车,跳槽大厂必备宝典,android开发环境搭建
  3. 如何从下载 UCSC 的 blat 等工具
  4. 计算机行业未来的规划模板,大学生计算机职业生涯规划书模板
  5. 爱普生Epson Stylus C84 打印机驱动
  6. 夸克链 CEO 周期访谈 | ArcBlock 播客
  7. 云原生系列 【基于CCE Kubernetes编排实战二】
  8. Redis 链接时好时坏[ error ] [2]Redis::pconnect(): connect() failed: Connection timed out
  9. Android 自定义RatingBar设置步长没起作用
  10. 无法web服务器上启动调试 未能启动asp.net,.net - 无法在Web服务器上启动调试。 无法启动ASP.NET调试VS 2010,II7,Win 7 x64...