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简单的实现树莓派的WEB控制
Feb 18 Python
Python如何为图片添加水印
Nov 25 Python
Python中sort和sorted函数代码解析
Jan 25 Python
Python处理文本换行符实例代码
Feb 03 Python
Python安装Flask环境及简单应用示例
May 03 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
Feb 29 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
Oct 15 Python
python 实现一个图形界面的汇率计算器
Nov 09 Python
聊一聊python常用的编程模块
May 14 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 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连接Oracle for NT 远程数据库
2006/10/09 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
移动节点的jquery代码
2014/01/13 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
历史专业个人求职信范文
2013/12/07 职场文书
致100米运动员广播稿
2014/02/14 职场文书
房地产推广策划方案
2014/05/19 职场文书
继续教育个人总结
2015/03/03 职场文书
《小小的船》教学反思
2016/02/18 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript