帮我用opencv 4.0.1 和python 3.8写一份代码要求如下: 使用小波变换将输入图像分解成高频、低频部分 并将高频、低频部分显示出来
时间: 2024-02-01 09:13:38 浏览: 67
基于小波变换实现图像分解与重构附matlab代码.zip
5星 · 资源好评率100%
好的,这里是使用OpenCV 4.0.1和Python 3.8实现图像小波变换的代码:
```python
import cv2
import numpy as np
# 读入图像
img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)
# 定义小波函数
def wavelet(img, mode='haar'):
# 小波分解
coeffs = pywt.dwt2(img, mode)
cA, (cH, cV, cD) = coeffs
# 将小波系数图像进行归一化处理
cA = cv2.normalize(cA, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
cH = cv2.normalize(cH, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
cV = cv2.normalize(cV, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
cD = cv2.normalize(cD, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
# 返回小波系数图像
return cA, cH, cV, cD
# 进行小波分解
cA, cH, cV, cD = wavelet(img)
# 显示低频部分
cv2.imshow('Approximation', cA)
# 显示高频部分
cv2.imshow('Horizontal', cH)
cv2.imshow('Vertical', cV)
cv2.imshow('Diagonal', cD)
# 等待按下任意键退出
cv2.waitKey(0)
cv2.destroyAllWindows()
```
请将代码中的 `input.jpg` 替换为你自己的图片路径,然后运行即可。在运行过程中,会弹出四个窗口,分别显示原始图像的低频部分和高频部分(水平、垂直和对角线)。
阅读全文