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中xrange和range的区别
May 13 Python
利用Python的Django框架中的ORM建立查询API
Apr 20 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
python破解zip加密文件的方法
May 31 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
Python中常用的高阶函数实例详解
Feb 21 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
python 串行执行和并行执行实例
Apr 30 Python
Python中实现输入一个整数的案例
May 03 Python
python属于软件吗
Jun 18 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
Feb 01 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
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
PHP自定义多进制的方法
2016/11/03 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
Python获取某一天是星期几的方法示例
2017/01/17 Python
python负载均衡的简单实现方法
2018/02/04 Python
python 调用钉钉机器人的方法
2019/02/20 Python
提升Python程序性能的7个习惯
2019/04/14 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
中学生在校期间的自我评价分享
2013/11/13 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
信访工作汇报材料
2014/10/27 职场文书
离职证明范本
2015/06/12 职场文书
心理学培训心得体会
2016/01/22 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript