首页 > 编程语言 >手把手教你用Python做一个图像融合demo,小白可上手!

手把手教你用Python做一个图像融合demo,小白可上手!

时间:2023-06-08 18:03:27浏览次数:40  
标签:img Python demo 教你用 cv2 融合 图像 out 图片


1.创作背景

说到融合,一下子会让我们这些95后想起来童年的动漫游戏王了!

发动魔法卡——融合!

手把手教你用Python做一个图像融合demo,小白可上手!_算法


哈哈,今天说得当然不是游戏王里的魔法了,但是我们使用的是Python魔法,今天我们将使用Python编程语言,以及自带的图像处理工具包进行图像融合操作,来实现图像融合的酷炫效果!

前几天在网上看了一个demo,使用OpenCV(开源计算机视觉库)进行图像的融合操作,那么何谓图像的融合呢?

所谓图像的融合指的是指两幅图像变成,“你中有我,我中有你”(最近在看搜神传电视剧,哎,时间过得真的快!童年的回忆啊!)

2.融合效果

说回正题,将两幅图像进行融合操作,从微观上来说是将两幅图片的像素点用一定的比例进行叠加,得到新的的像素矩阵,那么到底这到底是个什么效果呢?

我们直接上来看,最终的效果展示!

第一组:

待融合图片

手把手教你用Python做一个图像融合demo,小白可上手!_opencv_02


手把手教你用Python做一个图像融合demo,小白可上手!_python_03


融合结果:

手把手教你用Python做一个图像融合demo,小白可上手!_python_04


第二组:

待融合图片

手把手教你用Python做一个图像融合demo,小白可上手!_python_05

手把手教你用Python做一个图像融合demo,小白可上手!_python_06

融合结果

手把手教你用Python做一个图像融合demo,小白可上手!_opencv_07


怎么样看完了上面的几组图片,是不是觉得图像融合的操作很酷炫呢,让我们一起来看看具体的实现方法。

3.算法流程

我们知道图像是一组矩阵数据,每一个矩阵对应着图像的像素值,彩色图像包括三个通道,R,G,B,分别对应着红,绿,蓝的三原色。那么我们进行图像的融合的底层原理就是进行图像的像素点的叠加融合,将二者采用一定量的比例进行融合操作,得到最终的融合版本图像,进行显示即可。

4.代码实现

首先导入所使用的Python工具包,使用的是numpy的数据科学工具包,以及OpenCV的图像处理包。

import cv2
import numpy as np

将图像信息转换为矩阵信息进行储存

img = cv2.imread("./pic1.jpeg").astype(np.float32)
H, W, C = img.shape

img2 = cv2.imread('./pic2.jpg').astype(np.float32)
img = cv2.resize(img, (499, 375));

其中的读入图片可以修改为自己的图片,进行DIY的调整,但是需要将两幅图片的大小进行统一化的处理,否则无法进行融合。

设置图像的融合权重,可以采用以其中一副图片为主,另一张图片为辅助,调节融合权重的数值,更改融合的效果。

a = 0.5

进行像素值的实际相加与融合计算操作,计算最终融合图像的像素值。

out = img * a + img2 * (1 - a)
out = out.astype(np.uint8)

最后将融合的图像进行显示即可

cv2.imwrite("result.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()

怎么样,是不是感觉很容易做呢?那就赶紧自己动手试试吧,不仅可以尝试两张图片的融合,还可以进行三张图片的融合!

完整代码,在留言区的网盘链接,下载后,导入Pycharm即可使用,更多详细技术细节可以加我微信,与我进行交流哦~

我们下期见~



标签:img,Python,demo,教你用,cv2,融合,图像,out,图片
From: https://blog.51cto.com/u_13638291/6442048

相关文章

  • Python实际应用,处理字幕文件实现句首字母大写
    #Python实际应用,处理字幕文件实现句首字母大写。读取文件lower.txt,实现句首字母大写,将处理结果输出到Upper.txt文件infile=open("lower.txt","r")#打开输入文件outfile=open("Upper.txt","w")#打开输出文件flag=True#需要处理首字母大写的行标志,默认首行......
  • 实验6 turtle绘图与python库应用编程体验
    task1-1fromturtleimport*defmove(x,y):penup()goto(x,y)pendown()defdraw(n,size=100):foriinrange(n):fd(size)left(360/n)defmain():pensize(2)pencolor('red')move(-200,0)draw......
  • Python使用os模块创建带时间戳的文件
    直接上源码:importosimporttime#定义函数名:在py文件路径下创建cache的txt文件deftxt(name,text):#os.getcwd()获取当前的工作路径;new=os.getcwd()+'/cache/'#判断当前路径是否存在,没有则创建new文件夹ifnotos.path.exists(new):......
  • Some demos of supervisor conf
    conffilesin/etc/supervisor/conf.d/VersionSupervisorisinstalledbyapt,andit'sversionis:sudosupervisord--version4.1.0ConffilesThereareDjangoprojects,FastAPIprojects,CelerybeatandworkerinthecloudserverDjangoProject......
  • python 字典的键值对对比
    importos,sysimportre#1.列出不同的键值reload(sys)sys.setdefaultencoding("utf8")dct0={"name":"zhang","age":"23"}dct1={"name":"san","age":"23"}defcmpdicts(dct0......
  • python基础day21 正则表达式和re模块
     正则表达式的介绍他是一门独立的语言,跟python等的语言没有任何的关系,但是其他语言可以使用正则表达式来做一些功能,主要是用来筛选数据的^(13|14|15|18)[0-9]{9}$形如上述代码的就是正则表达式什么是正则表达式:利用一些特殊符号匹配出想要的数据就是正则表达式,简称正则......
  • python Tesseract 图片识别文字
    Python识别图片中的文字(zhihu.com)超详细解决pytesseract.pytesseract.TesseractNotFoundError:tesseractisnotinstalledorit'snotinyo...-简书(jianshu.com)......
  • Python的Lambda函数: 一把极简编程的瑞士军刀
    Python中的lambda函数,或者叫匿名函数,是一个极其强大的工具。它以简洁、优雅的语法提供了创建函数的快速方式。在本篇文章中,我们将全方位地深入研究lambda函数的用法和特点,通过理论和实例相结合的方式,让你的Python编程技巧更上一层楼。Lambda函数基本语法Lambda函数的基本语法形......
  • python中可变对象和不可变对象
    数据类型的操作一般分为三类:1、构造操作: 这类操作主要是基于一些已知信息,产生这个类的实例对象。类似银行进行开通账户 2、解析操作:这类操作是获取对象的一些有用信息,其结果反应了对象的一些特征,但返回的不是对象本身。类似银行查询账户余额  3、变化操作:这类操作是修改......
  • 联邦学习算法介绍-FedAvg详细案例-Python代码获取
    联邦学习算法介绍-FedAvg详细案例-Python代码获取一、联邦学习系统框架二、联邦平均算法(FedAvg)三、联邦随梯度下降算法(FedSGD)四、差分隐私随联邦梯度下降算法(DP-FedSGD)五、差分隐私联邦平均算法(DP-FedAVG)六、FedAVG案例附代码1)案例背景2)参数设置3)结果展示4)代码详解七、完整......