PythonはOpenCVモジュールを使用して画像融合のサンプルコードを実現しています!

OpenCV関数cv.add()を使用するか、単純にnumpy演算res = img1 + img2を使用して、2つの画像を追加できます。2つの画像の深度とタイプは同じである必要があります。2番目の画像はスカラー値でもかまいません。

3つの融合

マージするとき、2つのイメージは通常同じサイズです。サイズが異なる場合は、まず大きなイメージの一部を切り取り、小さなイメージとマージしてから、元の大きなイメージ全体を置き換える必要があります。小さな画像部分を切り取ります。

"" " 
#@Time:2020/4/3 
#@Author:JMChen 
" "" 
import cv2 as cv 

img1 = cv.imread('logo.png') img2 = cv.imread('lena.png') #in GET lena.png logo.png同じサイズと行ROI、COLS、チャネルIMG2 = img1.shape img_ROI1 = [ 0 :行、0 :COLS] img_ROI2 = cv.addWeighted(IMG1、0の。7、img_ROI1、0の3 、0)img2 [ 0 :行、0 :列] = img_ROI2 #混合画像を表示cv.imshow('img2'、img2)cv.waitKey(0)#2つの画像を追加(lena.png)+(ロゴ.png)Fusion img2 = cv.imread('lena.png')#1、lena.pngとlogo.pngで同じROIを取得img_ROI1 = img2 [ 0 :行、0 :cols] #2、単純なしきい値セグメンテーションを使用して、logo.pngのグレースケールイメージに基づいてマスクimg1_grayを作成cv.cvtColor =(IMG1、cv.COLOR_BGR2GRAY)RET、マスク= cv.threshold(img1_gray、10、255、cv.THRESH_BINARY)mask_inv = cv.bitwise_not(マスク)#3、ビット単位の論理積マスクを用いて、除去されますロゴのゼロ以外の部分で、新しい画像を取得しますnew_img2 = cv.bitwise_and(img_ROI1、img_ROI1、mask = mask_inv)#4、新しい画像をロゴに追加し、この部分を元の画像のimg_ROI1部分で置き換えますdst = cv。 add(img1、new_img2)img2 [ 0 :rows、0 :cols] = dst cv.imshow('res'、img2)cv.waitKey(0)cv.destroyAllWindows()#別のフュージョンを実装するimg2 = cv.imread ('lena.png')img_ROI1 = img2 [ 0 :行、0:COLS] DST_1 = cv.addWeighted(img_ROI1、0。55、DST、0。45、0)IMG2 [ 0 :行、0 :COLS] = DST_1 cv.imshow('res_2'、IMG2)cv.waitKey(0 )cv.destroyAllWindows()

効果は次のとおりです。

 

 

関連する比例パラメータは、必要に応じて調整できます

OpenCVモジュールを使用して画像融合を実現するPythonのサンプルコードに関するこの記事を紹介します。関連するOpenCV画像融合コンテンツについては、以前の記事を検索するか、以下の関連記事を引き続き参照してください。

おすすめ

転載: www.cnblogs.com/Py1233/p/12690968.html