opencv 图像融合
图像相加
要叠加两张图片,可以用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 图像融合相关推荐
- opencv图像融合
大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识h ...
- opencv图像融合(给人脸添加一个眼镜)
基于dlib68点人脸检测的小功能实现 图像旋转找的现成的方法,稍稍麻烦点的地方就是mask处理,虽然目的达到了,但是效果一般 1 import numpy as np 2 import cv2 as ...
- OpenCV图像处理使用笔记(四)——图像融合
前言常用 1.在OpenCV中定义了好多函数用来操作图像矩阵,有两个矩阵相加的,相减的,混合的,下面我使用QT加OpenCV演示图像融合这个函数. 2.我的IDE是Qt creator,OpenCV的 ...
- 【opencv】(2) 图像处理:边界填充、图像融合、图像阈值、数值计算
主要内容有:边界填充 cv2.copyMakeBorder(),数值计算 cv2.add(),改变尺寸 cv2.resize(),图像融合 cv2.addWeighted(),图像阈值 cv2.thr ...
- 【opencv系列08】OpenCV4.X图像融合操作
点击上方"AI搞事情"关注我们 图像叠加 add(src1, src2, dst=None, mask=None, dtype=None)函数或者numpy操作实现图像按位相加,若 ...
- opencv学习笔记7:图像加法与图像融合
图像加法 1.使用Numpy加法 运算方式:结果=图像1+图像2 原理:图像数据格式为unit8 8位二进制表示范围是0到255. 二进制相加 1.不超过255的,如100+58=158 2.两数相加 ...
- [Python图像处理] 三十五.OpenCV图像处理入门、算数逻辑运算与图像融合(推荐)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- OpenCV精进之路(十六):图像分解和融合技术——图像拼接和图像融合技术
图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手 ...
- [转载] opencv学习笔记7:图像加法与图像融合
参考链接: python opencv 基础 4: addWeighted() 融合两张图像 图像加法 1.使用Numpy加法 运算方式:结果=图像1+图像2 原理:图像数据格式为unit8 8位二进 ...
最新文章
- Microsoft 用户体验虚拟化 UE-V 1.0 RC 发布
- 微信小游戏「跳一跳」技术手段高分秘籍实现
- c语言程序不用编译即可被计算机识别运行,2011秋华农c语言试卷
- SQL Server加密存储过程的破解
- background-clip与background-origin
- django -- 实现ORM登录
- C++ open 打开文件
- INSERT INTO SELECT语句概述和示例
- WINCE的KITL调试环境
- 在TortoiseSVN使用clean up
- 父与子python下载不了_python3-父与子的编程之旅安装pygame出现的问题
- html 纯白色,要一张全屏的空白的图(纯白色的)
- GODI2018基站
- highChart导出PDF
- java poi word换行符_poi读取word的换行符问题
- 帝国CMS对接百度小程序实现文章自动收录的方法
- VC++ CTime COleDateTime的常用操作和比较
- 计算机类课题改革的难点,计算机类的课题论证内容主要从哪些方面来注意呢
- IPv6地址表示方法详解
- AD17板子形状设置改变
热门文章
- 线上python课程一般多少钱-python学习费用多少合适
- 零基础学python实战-Python3.6零基础入门与实战 PDF 带源码视频版
- python是什么类型的语言-为什么说 Python 是强类型语言?
- 2000坐标系转经纬度工具_【Leaflet开发】L.CRS + 搞定Leaflet多坐标系拓展
- JavaScript var语句简析
- DOM注册事件的三种方式~满满的干货哦
- LIRe 源代码分析 3:基本接口(ImageSearcher)
- jQuery 表单验证插件 jQuery Validation Engine 使用
- jdbc preparestatement 执行多条语句_MyBatis执行器
- java 怎么获取object的数据_自学java,想将来从事大数据工作,现实吗?怎么学?...