使用Python实现图像融合及加法运算

 更新时间:2022年05月13日 17:19:25   作者:华为云开发者社区  
这篇文章主要介绍了使用Python实现图像融合及加法运算,Python调用OpenCV实现图像融合及加法运算,包括三部分知识:图像融合、图像加法运算、图像类型转换,下文详细内容现需要的小伙伴可以参考一下

一.图像加法运算

1.Numpy库加法

其运算方法是:目标图像 = 图像1 + 图像2,运算结果进行取模运算。

  • 当像素值<=255时,结果为“图像1+图像2”,例如:120+48=168
  • 当像素值>255时,结果为对255取模的结果,例如:(255+64)%255=64

2.OpenCV加法运算

另一种方法是直接调用OpenCV库实现图像加法运算,方法如下:

目标图像 = cv2.add(图像1, 图像2)

此时结果是饱和运算,即:

  • 当像素值<=255时,结果为“图像1+图像2”,例如:120+48=168
  • 当像素值>255时,结果为255,例如:(255+64) = 255

两种方法对应的代码如下所示:

#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取图片
img = cv2.imread('picture.bmp')
test = img
#方法一:Numpy加法运算
result1 = img + test
#方法二:OpenCV加法运算
result2 = cv2.add(img, test)
#显示图像
cv2.imshow("original", img)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下图所示,其中result1为第一种方法,result2为第二种方法,白色点255更多。

注意:参与运算的图像大小和类型必须一致。下面是对彩色图像进行加法运算的结果。

二.图像融合

图像融合通常是指将2张或2张以上的图像信息融合到1张图像上,融合的图像含有更多的信息,能够更方便人们观察或计算机处理。如下图所示,将两张不清晰的图像融合得到更清晰的图。

图像融合是在图像加法的基础上增加了系数和亮度调节量。

  • 图像加法:目标图像 = 图像1 + 图像2
  • 图像融合:目标图像 = 图像1 * 系数1 + 图像2 * 系数2 + 亮度调节量

主要调用的函数是addWeighted,方法如下:

dst = cv2.addWeighter(scr1, alpha, src2, beta, gamma)
dst = src1 * alpha + src2 * beta + gamma

其中参数gamma不能省略。

代码如下:

#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取图片
src1 = cv2.imread('test22.jpg')
src2 = cv2.imread('picture.bmp')
#图像融合
result = cv2.addWeighted(src1, 1, src2, 1, 0)
#显示图像
cv2.imshow("src1", src1)
cv2.imshow("src2", src2)
cv2.imshow("result", result)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

需要注意的是,两张融合的图像像素大小需要一致,如下图所示,将两张RGB且像素410*410的图像融合。

设置不同的比例的融合如下所示:

result = cv2.addWeighted(src1, 0.6, src2, 0.8, 10)

三.图像类型转换

图像类型转换是指将一种类型转换为另一种类型,比如彩色图像转换为灰度图像、BGR图像转换为RGB图像。OPenCV提供了200多种不同类型之间的转换,其中最常用的包括3类,如下:

  • cv2.COLOR_BGR2GRAY
  • cv2.COLOR_BGR2RGB
  • cv2.COLOR_GRAY2BGR

代码如下所示:

#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt

#读取图片
src = cv2.imread('01.bmp')

#图像类型转换
result = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

#显示图像
cv2.imshow("src", src)
cv2.imshow("result", result)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下图所示:

如果使用通道转化,则结果如下图所示:

result = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)

图像处理通常需要将彩色图像转换为灰度图像再进行后续的操作,更多知识后续将继续分享,希望对着喜欢,尤其是做图像识别、图像处理的同学。

到此这篇关于使用Python实现图像融合及加法运算的文章就介绍到这了,更多相关Python图像融合内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PyCharm第一次安装及使用教程

    PyCharm第一次安装及使用教程

    本文通过图文并茂的形式给大家介绍PyCharm第一次安装及使用教程,分步骤通过实际案例给大家操作演示,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • python爬取内容存入Excel实例

    python爬取内容存入Excel实例

    这篇文章主要为大家详细介绍了python爬取内容存入Excel实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 详细过程带你用Python做车牌自动识别系统

    详细过程带你用Python做车牌自动识别系统

    这篇文章主要介绍了带你用Python做车牌自动识别系统的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Python使用pyinstaller打包成.exe文件执行后闪退的图文解决办法

    Python使用pyinstaller打包成.exe文件执行后闪退的图文解决办法

    这篇文章主要给大家介绍了关于Python使用pyinstaller打包成.exe文件执行后闪退的图文解决办法,闪退问题通常是由于程序运行过程中出现了未处理的异常或错误,导致程序崩溃,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • python列表的逆序遍历实现

    python列表的逆序遍历实现

    这篇文章主要介绍了python列表的逆序遍历实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 一次搞懂hasattr()/getattr()/setattr()在Python中的应用

    一次搞懂hasattr()/getattr()/setattr()在Python中的应用

    在Python中,hasattr()、getattr()和setattr()是一组内置函数,本文将从入门到精通,全面介绍hasattr()、getattr()和setattr()函数的用法和相关知识点,需要的可以了解下
    2023-08-08
  • 用python自动生成日历

    用python自动生成日历

    这篇文章主要介绍了如何用python自动生成日历,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • Python实现常见限流算法的示例代码

    Python实现常见限流算法的示例代码

    在系统的稳定性设计中,需要考虑到的就是限流,避免高并发环境下一下子把服务整垮了,本文为大家整理了一些Python实现的常见限流算法,希望对大家有所帮助
    2024-03-03
  • 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解

    使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解

    今天为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数
    2020-01-01
  • Python转码问题的解决方法

    Python转码问题的解决方法

    在Python中,可以对String调用decode和encode方法来实现转码。
    2008-10-10

最新评论