具体讲解见:这俩是我觉得讲的最清晰的,入门最容易懂的,我想要的是小波变换后的4个信息图,具体代码如下:

import numpy as np
import pywt
import cv2
import matplotlib.pyplot as plt


def haar_img():
    img_u8 = cv2.imread("./data/mini-MedPath/images/n001001.JPG")
    img_f32 = cv2.cvtColor(img_u8, cv2.COLOR_BGR2GRAY).astype(np.float32)

    plt.figure('二维小波一级变换')
    coeffs = pywt.dwt2(img_f32, 'haar')
    cA, (cH, cV, cD) = coeffs

    plt.imshow(cH, 'gray')
    plt.imsave('cH.png', cH, cmap='gray')

    plt.imshow(cA, 'gray')
    plt.imsave('cA.png', cA, cmap='gray')

    plt.imshow(cV, 'gray')
    plt.imsave('cV.png', cV, cmap='gray')

    plt.imshow(cD, 'gray')
    plt.imsave('cD.png', cD, cmap='gray')

    # 将各个子图进行拼接,最后得到一张图
    # AH = np.concatenate([cA, cH], axis=1)
    # VD = np.concatenate([cV, cD], axis=1)
    # img = np.concatenate([AH, VD], axis=0)
    # return img

if __name__ == '__main__':
    haar_img()

visio画的小波变换示意图:

python小波变化函数 小波变换 代码_cv2