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的curses库使用教程
Apr 11 Python
探究Python的Tornado框架对子域名和泛域名的支持
May 02 Python
python清除字符串里非数字字符的方法
Jul 02 Python
Python实现类的创建与使用方法示例
Jul 25 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
解决django-xadmin列表页filter关联对象搜索问题
Nov 15 Python
关于Python-faker的函数效果一览
Nov 28 Python
在keras中model.fit_generator()和model.fit()的区别说明
Jun 17 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php 发送带附件邮件示例
2014/01/23 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
js实现左右轮播图
2020/01/09 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
利用python爬取软考试题之ip自动代理
2017/03/28 Python
python中reload(module)的用法示例详解
2017/09/15 Python
python如何生成网页验证码
2018/07/28 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
介绍下WebSphere的安全性
2013/01/31 面试题
班长自荐书范文
2014/02/11 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
初二学习计划书范文
2014/04/27 职场文书
毕业生求职信
2014/06/10 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
幼儿园辞职信
2015/05/13 职场文书
采购员工作总结范文
2015/08/12 职场文书
初中地理教学反思
2016/02/19 职场文书
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS