python OpenCV的羽化融合图像

news2024/12/23 4:07:32

1.  读入两幅图像,苹果和橘子
2.  构建苹果和橘子的高斯金字塔(6 层)
3.  根据高斯金字塔计算拉普拉斯金字塔
4.  在拉普拉斯的每一层进行图像融合(苹果的左边与橘子的右边融合)
5.  根据融合后的图像金字塔重建原始图像。

import cv2
import numpy as np

#这里图像必须是2的n次幂
A = cv2.imread(r'D:\python_OpenCV\apple.jpg')
A=cv2.resize(A,(512,512),interpolation=cv2.INTER_CUBIC)
B = cv2.imread(r'D:\python_OpenCV\orange.jpg')
B=cv2.resize(B,(512,512),interpolation=cv2.INTER_CUBIC)
# generate Gaussian pyramid for A
print(f'a size is:{A.size,A.shape}')
print(f'B size is:{B.size,B.shape}')
G = A.copy()
gpA = [G]
#生成7层的高斯金字塔
for i in range(6):
    #进行高斯模糊向下采样
    G = cv2.pyrDown(G)
    print(f'G size is:{G.size, G.shape}')
    gpA.append(G)
# print(gpA)
# generate Gaussian pyramid for B
G = B.copy()
gpB = [G]
for i in range(6):
    G = cv2.pyrDown(G)
    print(f'G size is:{G.size, G.shape}')
    gpB.append(G)
# generate Laplacian Pyramid for A
lpA = [gpA[5]]
for i in range(5, 0, -1):
    print(f'i is :{i}')
    #从顶层开始,不断向上采样
    GE = cv2.pyrUp(gpA[i])
    print(f'GE size is:{GE.shape,GE.size}')
    print(f'gpA{i-1} size is:{gpA[i - 1].shape,gpA[i - 1].size}')
    #用下一层的高斯减去上上层高斯的上采样
    L = cv2.subtract(gpA[i - 1], GE)
    # 结果送给拉普拉斯金字塔
    lpA.append(L)
# generate Laplacian Pyramid for B
lpB = [gpB[5]]
for i in range(5, 0, -1):
    GE = cv2.pyrUp(gpB[i])
    L = cv2.subtract(gpB[i - 1], GE)
    lpB.append(L)
# Now add left and right halves of images in each level
# numpy.hstack(tup)
# Take a sequence of arrays and stack them horizontally to make a single array.
LS = []
#zip(lpA, lpB)把两个拉普拉斯金字塔的各层的两个图像组合成一个元祖,然后
#各个元祖构成一个ZIP
#对于各个元祖中的两个图像
for la, lb in zip(lpA, lpB):
    #取la,lb的尺寸皆可
    rows, cols, dpt = la.shape
    #利用np.hstack将这两个图像“一半一半”的拼接起来
    #取la的左半边和lb的右半边拼成融合后的图,结果给ls
    ls = np.hstack((la[:, 0:cols // 2], lb[:, cols // 2:]))
    #两个拉普拉斯金字塔各个层图融合后的结果给LS
    LS.append(ls)
# now reconstruct
#用融合后的拉普拉斯金字塔重构最终图像
#初始化ls为融合后拉普拉斯金字塔最高层
#下面就是循环结束后ls就是要求的最终图像
ls_ = LS[0]
for i in range(1, 6):
    #每层图像先向上采样,再和当前层的下一层图像相加,结果再赋给ls
    ls_ = cv2.pyrUp(ls_)
    ls_ = cv2.add(ls_, LS[i])
# image with direct connecting each half
#不用金字塔融合,直接生硬的连接两幅原始图样
real = np.hstack((A[:, :cols // 2], B[:, cols // 2:]))
cv2.imwrite('D:\python_OpenCV\Pyramid_blending2.jpg', ls_)
cv2.imwrite('D:\python_OpenCV\Direct_blending.jpg', real)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2106755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5改进 | 模块缝合 | C3 融合REPVGGOREPA提升检测性能【详细步骤 完整代码】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv5入门 改…

数字与文字组合商标,有一个元素近似整体驳回!

经常遇到有网友问驳回复审要不要做复审,其实判断分析好,大多数商标驳回后不值得做复审,也可以省掉不必要的费用,最近有个网友联系到普推知产商标老杨,咨询一个驳回复审的问题。 这个网友的商标是数字和文字组合&#…

若依系统的学习

若依环境 介绍 ‌若依是一款快速开发平台(低代码),用于快速构建企业级后台管理系统,它提供了许多常用的功能模块和组件,包括权限管理、代码生成、工作流、消息中心等 官方地址: https://www.ruoyi.vip/ ‌基于Spring Boot和Spring Cloud‌…

【分享】Excel表格设置“打开密码”的两种方法

在工作中,Excel文件通常包含敏感数据,出于安全性考虑,给文件设置打开密码是非常有效的方式。接下来,小编给大家介绍两种方法,帮助你轻松为Excel文件设置密码。 方法一:在Excel表里设置“打开密码” 这是Ex…

2024AEI:Cross-Supervised multisource prototypical network

目录 研究动机 研究数据集 研究方法 研究动机 该论文是为了解决以轴承故障诊断为背景的多源域小样本域自适应问题而提出的。文中有提及到实际的工业生产中,存在多源域缺少足够的样本标签数据支撑一般的多源域域自适应(MSDA)方法的情况&…

借助el-steps和el-form实现超长规则配置的功能

目录 一、应用场景 二、开发流程 三、详细开发流程 四、总结 一、应用场景 最近开发了一个规则类的配置功能,这个功能之前就写过,最近完善了一下,所以将原先的规则变得更多元化,结构也更多了一层,添加新功能的时候…

Java箱与泛型

大O的渐进表示法 大 O 的渐进表示法 去掉了那些对结果影响不大的项 &#xff0c;简洁明了的表示出了执行次数。 void func1(int N){ int count 0; for (int i 0; i < N ; i) { for (int j 0; j < N ; j) { count; } } for (int k 0; k < 2 * N ; k) { count; } in…

深度学习示例2-多输入多输出的神经网络模型

一、代码示例 from tensorflow import keras from tensorflow.keras import layers import numpy as np# 定义 多输入 多输出的模型 vocabulary_size = 1000 num_tags = 100 num_departments = 4title = keras.Input(shape=(vocabulary_size,), name = "title") tex…

【虚拟化】KVM常用命令操作(virsh磁盘管理)

目录 一、KVM概述 1.1 KVM工具栈 1.2 libvirt架构概述 1.3 KVM磁盘格式介绍 1.4 KVM磁盘操作常见语法 1.5 qemu-img命令简介 1.6 libguestfs安装 二、虚拟机磁盘管理 2.1 查看虚拟机磁盘 2.2 创建虚拟机磁盘 2.3 扩容磁盘容量 2.4 查看虚拟机存储状态 2.5 快照 2…

基于BiLSTM-CRF的医学命名实体识别研究(下)模型构建

一.生成映射字典 接下来需要将每个汉字、边界、拼音、偏旁部首等映射成向量。所以&#xff0c;我们首先需要来构造字典&#xff0c;统计多少个不同的字、边界、拼音、偏旁部首等&#xff0c;然后再构建模型将不同的汉字、拼音等映射成不同的向量。 在prepare_data.py中自定义…

实现自定义的移动端双指缩放

原理&#xff1a; DOM上绑定双指触控相关的事件&#xff0c;当双指触控时&#xff0c;保存初始距离&#xff0c;当双指移动时&#xff0c;计算两触控点的距离&#xff0c;根据移动中的距离与初始距离调节缩放比例&#xff0c;再根据缩放比例改变元素样式即可实现缩放 效果演示…

Java,版本控制:算法详解与实现

Spring Boot微服务架构技术及其版本号比较优化 随着云技术和分布式系统的快速发展&#xff0c;微服务架构已经成为现代软件开发不可或缺的一部分。 Spring Boot&#xff0c;作为一款广受欢迎的Java开发框架&#xff0c;其简洁的配置和快速启动的特性深受开发者青睐。 配合Sp…

旅游线路规划和路线下载

新疆旅游&#xff0c;规划一个北疆旅游线路安排如下&#xff1a; 第一天&#xff1a;从乌鲁木齐到魔鬼城&#xff0c;晚上住宿克拉玛依市乌尔禾区&#xff1b; 第二天&#xff1a;从克拉玛依市乌尔木区到五彩滩&#xff0c;晚上住宿贾登峪&#xff1b; 第三天&#xff1a;从…

win10本地设置无密码远程桌面登录设置

win10本地设置无密码远程桌面登录

软考超详细准备之软件设计师的计算机系统题型二(上午题)

目录 流水线 存储器: cache Cache命中率的相关图形 中断 相关习题 输入和输出 相关习题 总线 相关习题 加密技术与认证技术 相关习题 加密技术 相关习题 杂题 流水线 流水线&#xff08;Pipeline&#xff09;是一种在硬件设计中用于提高效率和吞吐量的技术&…

SOMEIP_ETS_088: SD_Answer_multiple_subscribes_together

测试目的&#xff1a; 验证设备&#xff08;DUT&#xff09;是否能够接受它接收到的每个SubscribeEventgroup条目。 描述 本测试用例旨在检查DUT在接收到包含多个SubscribeEventgroup条目的消息时&#xff0c;是否能够为每个条目发送SubscribeEventgroupAck。 测试拓扑&…

Runway删库跑路,备受瞩目的Stable Diffusion v1.5不见了!

替换方案&#xff1a; Hugging Face 模型镜像 - Gitee AIGitee AI 汇聚最新最热 AI 模型&#xff0c;提供模型体验、推理、训练、部署和应用的一站式服务&#xff0c;提供充沛算力&#xff0c;做中国最好的 AI 社区。https://ai.gitee.com/hf-models

【小程序 - 大智慧】深入微信小程序的核心原理

目录 课程目标背景双线程架构WebView 结构快速渲染 PageFrame编译原理Exparser通讯系统生命周期基础库解包跨端框架预编译半编译半运行运行时框架 主流技术Tarouni-app汇总 下周安排 课程目标 本次课程主要通过后台管理小程序回顾一下小程序的高阶语法&#xff0c;然后讲解整体…

Django+Vue协同过滤算法图书推荐系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

144. 腾讯云Redis数据库

文章目录 一、Redis 的主要功能特性二、Redis 的典型应用场景三、Redis 的演进过程四、Redis 的架构设计五、Redis 的数据类型及操作命令六、腾讯云数据库 Redis七、总结 Redis 是一种由 C 语言开发的 NoSQL 数据库&#xff0c;以其高性能的键值对存储和多种应用场景而闻名。本…