【Python】手把手教你用Python做一個圖像融合demo,小白可上手!

創(chuàng)作背景
說到融合,一下子會讓我們這些95后想起來童年的動漫游戲王了!
發(fā)動魔法卡——融合!

哈哈,今天說得當(dāng)然不是游戲王里的魔法了,但是我們使用的是Python魔法,今天我們將使用Python編程語言,以及自帶的圖像處理工具包進(jìn)行圖像融合操作,來實(shí)現(xiàn)圖像融合的酷炫效果!
前幾天在網(wǎng)上看了一個demo,使用OpenCV(開源計算機(jī)視覺庫)進(jìn)行圖像的融合操作,那么何謂圖像的融合呢?
所謂圖像的融合指的是指兩幅圖像變成,“你中有我,我中有你”(最近在看搜神傳電視劇,哎,時間過得真的快!童年的回憶?。。?/span>
融合效果
說回正題,將兩幅圖像進(jìn)行融合操作,從微觀上來說是將兩幅圖片的像素點(diǎn)用一定的比例進(jìn)行疊加,得到新的的像素矩陣,那么到底這到底是個什么效果呢?
我們直接上來看,最終的效果展示!
第一組:
待融合圖片



融合結(jié)果


第二組:
待融合圖片

融合結(jié)果


待融合圖片

融合結(jié)果


怎么樣看完了上面的幾組圖片,是不是覺得圖像融合的操作很酷炫呢,讓我們一起來看看具體的實(shí)現(xiàn)方法。
算法流程
我們知道圖像是一組矩陣數(shù)據(jù),每一個矩陣對應(yīng)著圖像的像素值,彩色圖像包括三個通道,R,G,B,分別對應(yīng)著紅,綠,藍(lán)的三原色。那么我們進(jìn)行圖像的融合的底層原理就是進(jìn)行圖像的像素點(diǎn)的疊加融合,將二者采用一定量的比例進(jìn)行融合操作,得到最終的融合版本圖像,進(jìn)行顯示即可。

代碼實(shí)現(xiàn)
首先導(dǎo)入所使用的Python工具包,使用的是numpy的數(shù)據(jù)科學(xué)工具包,以及OpenCV的圖像處理包。
import?cv2
import?numpy as?np將圖像信息轉(zhuǎn)換為矩陣信息進(jìn)行儲存
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));其中的讀入圖片可以修改為自己的圖片,進(jìn)行DIY的調(diào)整,但是需要將兩幅圖片的大小進(jìn)行統(tǒng)一化的處理,否則無法進(jìn)行融合。
設(shè)置圖像的融合權(quán)重,可以采用以其中一副圖片為主,另一張圖片為輔助,調(diào)節(jié)融合權(quán)重的數(shù)值,更改融合的效果。
a?= 0.5進(jìn)行像素值的實(shí)際相加與融合計算操作,計算最終融合圖像的像素值。
out?= img * a + img2 * (1?- a)
out?= out.astype(np.uint8)最后將融合的圖像進(jìn)行顯示即可
cv2.imwrite("result.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()怎么樣,是不是感覺很容易做呢?那就趕緊自己動手試試吧,不僅可以嘗試兩張圖片的融合,還可以進(jìn)行三張圖片的融合!
完整代碼,在留言區(qū)的網(wǎng)盤鏈接,下載后,導(dǎo)入Pycharm即可使用,更多詳細(xì)技術(shù)細(xì)節(jié)可以加我微信,與我進(jìn)行交流哦~
我們下期見~
參考鏈接:https://www.cnblogs.com/wojianxin/p/12551921.html
往期精彩回顧
獲取本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。
加入微信群請掃碼:
