使用Python實現(xiàn)圖像融合及加法運算
一.圖像加法運算
1.Numpy庫加法
其運算方法是:目標(biāo)圖像 = 圖像1 + 圖像2,運算結(jié)果進(jìn)行取模運算。
- 當(dāng)像素值<=255時,結(jié)果為“圖像1+圖像2”,例如:120+48=168
- 當(dāng)像素值>255時,結(jié)果為對255取模的結(jié)果,例如:(255+64)%255=64
2.OpenCV加法運算
另一種方法是直接調(diào)用OpenCV庫實現(xiàn)圖像加法運算,方法如下:
目標(biāo)圖像 = cv2.add(圖像1, 圖像2)
此時結(jié)果是飽和運算,即:
- 當(dāng)像素值<=255時,結(jié)果為“圖像1+圖像2”,例如:120+48=168
- 當(dāng)像素值>255時,結(jié)果為255,例如:(255+64) = 255
兩種方法對應(yīng)的代碼如下所示:
#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()輸出結(jié)果如下圖所示,其中result1為第一種方法,result2為第二種方法,白色點255更多。

注意:參與運算的圖像大小和類型必須一致。下面是對彩色圖像進(jìn)行加法運算的結(jié)果。

二.圖像融合
圖像融合通常是指將2張或2張以上的圖像信息融合到1張圖像上,融合的圖像含有更多的信息,能夠更方便人們觀察或計算機處理。如下圖所示,將兩張不清晰的圖像融合得到更清晰的圖。

圖像融合是在圖像加法的基礎(chǔ)上增加了系數(shù)和亮度調(diào)節(jié)量。
- 圖像加法:目標(biāo)圖像 = 圖像1 + 圖像2
- 圖像融合:目標(biāo)圖像 = 圖像1 * 系數(shù)1 + 圖像2 * 系數(shù)2 + 亮度調(diào)節(jié)量
主要調(diào)用的函數(shù)是addWeighted,方法如下:
dst = cv2.addWeighter(scr1, alpha, src2, beta, gamma) dst = src1 * alpha + src2 * beta + gamma
其中參數(shù)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的圖像融合。

設(shè)置不同的比例的融合如下所示:
result = cv2.addWeighted(src1, 0.6, src2, 0.8, 10)

三.圖像類型轉(zhuǎn)換
圖像類型轉(zhuǎn)換是指將一種類型轉(zhuǎn)換為另一種類型,比如彩色圖像轉(zhuǎn)換為灰度圖像、BGR圖像轉(zhuǎn)換為RGB圖像。OPenCV提供了200多種不同類型之間的轉(zhuǎn)換,其中最常用的包括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')
#圖像類型轉(zhuǎn)換
result = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
#顯示圖像
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()輸出結(jié)果如下圖所示:

如果使用通道轉(zhuǎn)化,則結(jié)果如下圖所示:
result = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)

圖像處理通常需要將彩色圖像轉(zhuǎn)換為灰度圖像再進(jìn)行后續(xù)的操作,更多知識后續(xù)將繼續(xù)分享,希望對著喜歡,尤其是做圖像識別、圖像處理的同學(xué)。
到此這篇關(guān)于使用Python實現(xiàn)圖像融合及加法運算的文章就介紹到這了,更多相關(guān)Python圖像融合內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳細(xì)過程帶你用Python做車牌自動識別系統(tǒng)
這篇文章主要介紹了帶你用Python做車牌自動識別系統(tǒng)的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
Python使用pyinstaller打包成.exe文件執(zhí)行后閃退的圖文解決辦法
這篇文章主要給大家介紹了關(guān)于Python使用pyinstaller打包成.exe文件執(zhí)行后閃退的圖文解決辦法,閃退問題通常是由于程序運行過程中出現(xiàn)了未處理的異常或錯誤,導(dǎo)致程序崩潰,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
一次搞懂hasattr()/getattr()/setattr()在Python中的應(yīng)用
在Python中,hasattr()、getattr()和setattr()是一組內(nèi)置函數(shù),本文將從入門到精通,全面介紹hasattr()、getattr()和setattr()函數(shù)的用法和相關(guān)知識點,需要的可以了解下2023-08-08
使用Python爬蟲庫BeautifulSoup遍歷文檔樹并對標(biāo)簽進(jìn)行操作詳解
今天為大家介紹下Python爬蟲庫BeautifulSoup遍歷文檔樹并對標(biāo)簽進(jìn)行操作的詳細(xì)方法與函數(shù)2020-01-01

