python使用OpenCV模块实现图像的融合示例代码


Posted in Python onApril 10, 2020

可以通过OpenCV函数cv.add()或简单地通过numpy操作添加两个图像,res = img1 + img2.两个图像应该具有相同的深度和类型,或者第二个图像可以是标量值.

三种融合

注意融合时,一般来说两个图像的尺寸是一样大小的,如果大小不一样,需要把大的图像的某一部分先截出来,与小的图先融合,再作为整体替换掉原来大图中抠出的小图部分。

"""
# @Time  : 2020/4/3
# @Author : JMChen
"""
import cv2 as cv

img1 = cv.imread('logo.png')
img2 = cv.imread('lena.png')
# 在lena.png获取和logo.png大小相同的ROI
rows, cols, channels = img1.shape
img_ROI1 = img2[0:rows, 0:cols]

img_ROI2 = cv.addWeighted(img1, 0.7, img_ROI1, 0.3, 0)
img2[0:rows, 0:cols] = img_ROI2

# 显示混合后的图片
cv.imshow('img2', img2)
cv.waitKey(0)

# 将两幅图像(lena.png)+ (logo.png)进行融合
img2 = cv.imread('lena.png')
# 1,在lena.png获取和logo.png大小相同的ROI
img_ROI1 = img2[0:rows, 0:cols]

# 2,基于logo.png的灰度图,利用简单的阈值分割创建一个掩模
img1_gray = cv.cvtColor(img1, cv.COLOR_BGR2GRAY)
ret, mask = cv.threshold(img1_gray, 10, 255, cv.THRESH_BINARY)
mask_inv = cv.bitwise_not(mask)

# 3,与掩模进行按位与操作,去掉logo中非0部分,得到新的图
new_img2 = cv.bitwise_and(img_ROI1, img_ROI1, mask=mask_inv)

# 4,将新图与logo相加,然后将这一部分替换掉原始图像的img_ROI1部分
dst = cv.add(img1, new_img2)
img2[0:rows, 0:cols] = dst

cv.imshow('res', img2)
cv.waitKey(0)
cv.destroyAllWindows()

# 实现另一种融合
img2 = cv.imread('lena.png')
img_ROI1 = img2[0:rows, 0:cols]

dst_1 = cv.addWeighted(img_ROI1, 0.55, dst, 0.45, 0)
img2[0:rows, 0:cols] = dst_1

cv.imshow('res_2', img2)
cv.waitKey(0)
cv.destroyAllWindows()

效果如下:

python使用OpenCV模块实现图像的融合示例代码

python使用OpenCV模块实现图像的融合示例代码

相关的比例参数可以自己按需调

到此这篇关于python使用OpenCV模块实现图像的融合示例代码的文章就介绍到这了,更多相关OpenCV 图像融合内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现股市信息下载的方法
Jun 15 Python
Python 描述符(Descriptor)入门
Nov 20 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
PyQt5每天必学之布局管理
Apr 19 Python
Windows下PyCharm安装图文教程
Aug 27 Python
Python 通过打码平台实现验证码的实现
May 13 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
Python简单实现区域生长方式
Jan 16 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 Python
Python基于百度AI实现抓取表情包
Jun 27 Python
Python OpenCV实现图像模板匹配详解
Apr 07 Python
Jupyter notebook运行Spark+Scala教程
Apr 10 #Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 #Python
jupyter notebook清除输出方式
Apr 10 #Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 #Python
jupyter notebook参数化运行python方式
Apr 10 #Python
Python库skimage绘制二值图像代码实例
Apr 10 #Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 #Python
You might like
php巧获服务器端信息
2006/12/06 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
Python装饰器使用示例及实际应用例子
2015/03/06 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
python跳出双层for循环的解决方法
2019/06/24 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
总经理任命书
2014/03/29 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
商务考察邀请函模板
2015/02/02 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
德劲DE1105机评
2022/04/05 无线电