python使用OpenCV模塊實現(xiàn)圖像的融合示例代碼
可以通過OpenCV函數(shù)cv.add()或簡單地通過numpy操作添加兩個圖像,res = img1 + img2.兩個圖像應(yīng)該具有相同的深度和類型,或者第二個圖像可以是標(biāo)量值.
三種融合
注意融合時,一般來說兩個圖像的尺寸是一樣大小的,如果大小不一樣,需要把大的圖像的某一部分先截出來,與小的圖先融合,再作為整體替換掉原來大圖中摳出的小圖部分。
""" # @Time : 2020/4/3 # @Author : JMChen """ import cv2 as cv img1 = cv.imread('logo.png') img2 = cv.imread('lena.png') # 在lena.png獲取和logo.png大小相同的ROI rows, cols, channels = img1.shape img_ROI1 = img2[0:rows, 0:cols] img_ROI2 = cv.addWeighted(img1, 0.7, img_ROI1, 0.3, 0) img2[0:rows, 0:cols] = img_ROI2 # 顯示混合后的圖片 cv.imshow('img2', img2) cv.waitKey(0) # 將兩幅圖像(lena.png)+ (logo.png)進行融合 img2 = cv.imread('lena.png') # 1,在lena.png獲取和logo.png大小相同的ROI img_ROI1 = img2[0:rows, 0:cols] # 2,基于logo.png的灰度圖,利用簡單的閾值分割創(chuàng)建一個掩模 img1_gray = cv.cvtColor(img1, cv.COLOR_BGR2GRAY) ret, mask = cv.threshold(img1_gray, 10, 255, cv.THRESH_BINARY) mask_inv = cv.bitwise_not(mask) # 3,與掩模進行按位與操作,去掉logo中非0部分,得到新的圖 new_img2 = cv.bitwise_and(img_ROI1, img_ROI1, mask=mask_inv) # 4,將新圖與logo相加,然后將這一部分替換掉原始圖像的img_ROI1部分 dst = cv.add(img1, new_img2) img2[0:rows, 0:cols] = dst cv.imshow('res', img2) cv.waitKey(0) cv.destroyAllWindows() # 實現(xiàn)另一種融合 img2 = cv.imread('lena.png') img_ROI1 = img2[0:rows, 0:cols] dst_1 = cv.addWeighted(img_ROI1, 0.55, dst, 0.45, 0) img2[0:rows, 0:cols] = dst_1 cv.imshow('res_2', img2) cv.waitKey(0) cv.destroyAllWindows()
效果如下:
相關(guān)的比例參數(shù)可以自己按需調(diào)
到此這篇關(guān)于python使用OpenCV模塊實現(xiàn)圖像的融合示例代碼的文章就介紹到這了,更多相關(guān)OpenCV 圖像融合內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
接口自動化多層嵌套json數(shù)據(jù)處理代碼實例
這篇文章主要介紹了接口自動化多層嵌套json數(shù)據(jù)處理代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11Python 利用argparse模塊實現(xiàn)腳本命令行參數(shù)解析
這篇文章主要介紹了Python 利用argparse模塊實現(xiàn)腳本命令行參數(shù)解析,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Pytorch GPU內(nèi)存占用很高,但是利用率很低如何解決
這篇文章主要介紹了Pytorch GPU內(nèi)存占用很高,但是利用率很低的原因及解決方法,具有很好的參考價值,希望對大家 有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06