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之Python安装
Sep 12 Python
Python命令行参数解析模块getopt使用实例
Apr 13 Python
Python实现快速多线程ping的方法
Jul 15 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
Python简单生成随机数的方法示例
Mar 31 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
Django搭建项目实战与避坑细节详解
Dec 06 Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 Python
用Python爬取某乎手机APP数据
Jun 15 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
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
php实现的xml操作类
2016/01/15 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
用JQuery调用Session的实现代码
2010/10/29 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
python协程之动态添加任务的方法
2019/02/19 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
基于python实现地址和经纬度转换
2020/05/19 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
大学四年的个人自我评价
2014/01/14 职场文书
关于运动会的广播稿
2014/09/22 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
golang中的空slice案例
2021/04/27 Golang
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫
MySQL创建管理RANGE分区
2022/04/13 MySQL