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温度转换实例分析
Jan 17 Python
pandas将DataFrame的列变成行索引的方法
Apr 10 Python
python实现旋转和水平翻转的方法
Oct 25 Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
利用python计算时间差(返回天数)
Sep 07 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 Python
Python基础之元组与文件知识总结
May 19 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答题类应用接口实例
2015/02/09 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
js验证IP及子网掩码的合法性有效性示例
2014/04/30 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
vuex操作state对象的实例代码
2018/04/25 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
一百行JS代码实现一个校验工具
2019/04/30 Javascript
python 图片验证码代码分享
2012/07/04 Python
python中常用的九种预处理方法分享
2016/09/11 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
python3调用R的示例代码
2018/02/23 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
教师自我反思材料
2014/02/14 职场文书
《掌声》教学反思
2014/02/23 职场文书
业务员简历自我评价
2014/03/06 职场文书
统招统分证明
2015/06/23 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android