我需要在 python 中进行图像处理。我想使用小波变换作为滤波器组。谁能建议我应该使用哪个库?我安装了 pywavelet,但我不知道如何将它与 opencv 结合使用。如果我使用 wavedec2 命令,它会引发 ValueError("Expected 2D input data.")
谁能帮我?
我需要在 python 中进行图像处理。我想使用小波变换作为滤波器组。谁能建议我应该使用哪个库?我安装了 pywavelet,但我不知道如何将它与 opencv 结合使用。如果我使用 wavedec2 命令,它会引发 ValueError("Expected 2D input data.")
谁能帮我?
希望这可以帮助
import numpy as np
import pywt
import cv2
def w2d(img, mode='haar', level=1):
imArray = cv2.imread(img)
#Datatype conversions
#convert to grayscale
imArray = cv2.cvtColor( imArray,cv2.COLOR_RGB2GRAY )
#convert to float
imArray = np.float32(imArray)
imArray /= 255;
# compute coefficients
coeffs=pywt.wavedec2(imArray, mode, level=level)
#Process Coefficients
coeffs_H=list(coeffs)
coeffs_H[0] *= 0;
# reconstruction
imArray_H=pywt.waverec2(coeffs_H, mode);
imArray_H *= 255;
imArray_H = np.uint8(imArray_H)
#Display result
cv2.imshow('image',imArray_H)
cv2.waitKey(0)
cv2.destroyAllWindows()
w2d("test1.png",'db1',10)
Navaneeth的答案是正确的,但有两个更正:
1- Opencv 读取图像并将其保存为 BGR 而不是 RGB,因此您应该做到cv2.COLOR_BGR2GRAY准确。
2- 最高级别_multilevel.py是 7 而不是 10,所以你应该这样做:w2d("test1.png",'db1',7)