本部分主要作为付费课程的讲解,不是太详细,文末有具体链接。

效果

drawing

步骤

实现

import numpy as np
import cv2 as cv

apple = cv.imread('pic/apple.jpg')
orange = cv.imread('pic/orange.jpg')

A = [apple] # 320, 320
B = [orange]
LA, LB, L = [], [], []

n = 5

for i in range(1, n+1):
    A.append(cv.pyrDown(A[-1]))
    B.append(cv.pyrDown(B[-1]))

for i in range(n):
    LA.append(cv.subtract(A[i], cv.pyrUp(A[i+1])))
    LB.append(cv.subtract(B[i], cv.pyrUp(B[i+1])))
LA.append(A[n])
LB.append(B[n])
    
for la, lb in zip(LA, LB):
    h, w, c = la.shape
    L.append(np.hstack([la[:, :w//2], lb[:, w//2:]]))
    
B = L[n]
for i in range(n, 0, -1):
    B = cv.add(cv.pyrUp(B), L[i-1])
    
plt.imshow(B) # B 取自 blend(融合)之意,最终的融合结果
plt.show()

说明:

  1. 未经许可,谢绝转载。
  2. 本教程为《数字图像处理Python OpenCV实战》的配套代码相关内容。
    免费视频教程为0-6章(标题号≤6),可在此处点击观看。
    所有课件及源代码可在此处下载:
    链接:https://pan.baidu.com/s/198PySe_vebO3e06idHSQ6g
    提取码:11o4
    有问题可在QQ群(1079300899)指出,进群答案:数字图像处理。在本文评论指出可能导致回复很晚。