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实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
wxpython中自定义事件的实现与使用方法分析
Jul 21 Python
Python工程师面试必备25条知识点
Jan 17 Python
pandas的object对象转时间对象的方法
Apr 11 Python
PyCharm 设置SciView工具窗口的方法
Jan 15 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
在python中创建指定大小的多维数组方式
Nov 28 Python
python文件和文件夹复制函数
Feb 07 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
Python super()方法原理详解
Mar 31 Python
python datetime处理时间小结
Apr 16 Python
python小白切忌乱用表达式
May 29 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
Javascript 中的类和闭包
2010/01/08 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
电信专业毕业生推荐信
2013/11/18 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
销售内勤岗位职责
2014/04/15 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
安全技术说明书
2014/05/09 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android