图像相加

要叠加两张图片,可以用cv.add()函数,相加两幅图片的形状(高度/宽度/通道数)必须相同。numpy中可以直接用res = img + img1相加,但这两者的结果并不相同:

import numpy as np
import cv2 as cv
x = np.uint8([250])
y = np.uint8([10])
print(cv.add(x, y))  # 250+10 = 260 => 255
print(x + y)  # 250+10 = 260 % 256 = 4

如果是二值化图片(只有0和255两种值),两者结果是一样的(用numpy的方式更简便一些)。

图像加权相加

图像混合cv.addWeighted()是一种图像加权相加的操作,两幅图像的权重可以不一样,也可以一样。γ相当于一个修正值:

α和β都等于1时,就相当于图像相加。

img1 = cv2.imread('lena_small.jpg')
img2 = cv2.imread('opencv-logo-white.png')
res = cv2.addWeighted(img1, 0.6, img2, 0.4, 0)

图像按位操作

cv2.bitwise_and(),cv2.bitwise_or(), cv2.bitwise_not(), cv2.bitwise_xor() 分别是按位与/或/非/异或操作,有什么用途呢?比如说我们要实现下面 图1 的效果:

如果将两幅图像直接加权相加,无法实现上图的效果。所以我们需要用按位操作。首先来了解一下掩膜(mask)的概念:掩膜是用一副二值化图片对另外一幅图片进行局部的遮挡,看下图就一目了然了:

所以我们要得到图1的效果,思路就是把原图中要放logo的区域抠出来,再把logo放进去就行了。

import numpy as np
import cv2 as cvimg1 = cv.imread('lena.jpg')
img2 = cv.imread('opencv-logo-white.png')# 把logo放在左上角,所以我们只关心这一块区域
rows, cols = img2.shape[:2]
roi = img1[:rows, :cols]# 创建掩膜
img2gray = cv.cvtColor(img2, cv.COLOR_BGR2GRAY)
ret, mask = cv.threshold(img2gray, 10, 255, cv.THRESH_BINARY)
mask_inv = cv.bitwise_not(mask)# 保留除logo外的背景
img1_bg = cv.bitwise_and(roi, roi, mask=mask_inv)
dst = cv.add(img1_bg, img2)  # 进行融合
img1[:rows, :cols] = dst  # 融合后放在原图上

opencv 图像融合相关推荐

  1. opencv图像融合

    大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识h ...

  2. opencv图像融合(给人脸添加一个眼镜)

    基于dlib68点人脸检测的小功能实现 图像旋转找的现成的方法,稍稍麻烦点的地方就是mask处理,虽然目的达到了,但是效果一般 1 import numpy as np 2 import cv2 as ...

  3. OpenCV图像处理使用笔记(四)——图像融合

    前言常用 1.在OpenCV中定义了好多函数用来操作图像矩阵,有两个矩阵相加的,相减的,混合的,下面我使用QT加OpenCV演示图像融合这个函数. 2.我的IDE是Qt creator,OpenCV的 ...

  4. 【opencv】(2) 图像处理:边界填充、图像融合、图像阈值、数值计算

    主要内容有:边界填充 cv2.copyMakeBorder(),数值计算 cv2.add(),改变尺寸 cv2.resize(),图像融合 cv2.addWeighted(),图像阈值 cv2.thr ...

  5. 【opencv系列08】OpenCV4.X图像融合操作

    点击上方"AI搞事情"关注我们 图像叠加 add(src1, src2, dst=None, mask=None, dtype=None)函数或者numpy操作实现图像按位相加,若 ...

  6. opencv学习笔记7:图像加法与图像融合

    图像加法 1.使用Numpy加法 运算方式:结果=图像1+图像2 原理:图像数据格式为unit8 8位二进制表示范围是0到255. 二进制相加 1.不超过255的,如100+58=158 2.两数相加 ...

  7. [Python图像处理] 三十五.OpenCV图像处理入门、算数逻辑运算与图像融合(推荐)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  8. OpenCV精进之路(十六):图像分解和融合技术——图像拼接和图像融合技术

    图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手 ...

  9. [转载] opencv学习笔记7:图像加法与图像融合

    参考链接: python opencv 基础 4: addWeighted() 融合两张图像 图像加法 1.使用Numpy加法 运算方式:结果=图像1+图像2 原理:图像数据格式为unit8 8位二进 ...

最新文章

  1. Microsoft 用户体验虚拟化 UE-V 1.0 RC 发布
  2. 微信小游戏「跳一跳」技术手段高分秘籍实现
  3. c语言程序不用编译即可被计算机识别运行,2011秋华农c语言试卷
  4. SQL Server加密存储过程的破解
  5. background-clip与background-origin
  6. django -- 实现ORM登录
  7. C++ open 打开文件
  8. INSERT INTO SELECT语句概述和示例
  9. WINCE的KITL调试环境
  10. 在TortoiseSVN使用clean up
  11. 父与子python下载不了_python3-父与子的编程之旅安装pygame出现的问题
  12. html 纯白色,要一张全屏的空白的图(纯白色的)
  13. GODI2018基站
  14. highChart导出PDF
  15. java poi word换行符_poi读取word的换行符问题
  16. 帝国CMS对接百度小程序实现文章自动收录的方法
  17. VC++ CTime COleDateTime的常用操作和比较
  18. 计算机类课题改革的难点,计算机类的课题论证内容主要从哪些方面来注意呢
  19. IPv6地址表示方法详解
  20. AD17板子形状设置改变

热门文章

  1. 线上python课程一般多少钱-python学习费用多少合适
  2. 零基础学python实战-Python3.6零基础入门与实战 PDF 带源码视频版
  3. python是什么类型的语言-为什么说 Python 是强类型语言?
  4. 2000坐标系转经纬度工具_【Leaflet开发】L.CRS + 搞定Leaflet多坐标系拓展
  5. JavaScript var语句简析
  6. DOM注册事件的三种方式~满满的干货哦
  7. LIRe 源代码分析 3:基本接口(ImageSearcher)
  8. jQuery 表单验证插件 jQuery Validation Engine 使用
  9. jdbc preparestatement 执行多条语句_MyBatis执行器
  10. java 怎么获取object的数据_自学java,想将来从事大数据工作,现实吗?怎么学?...