2024-04-30 01:19:32 发布
网友
我需要用python做一个图像处理。我想用小波变换作为滤波器组。有人能告诉我应该用哪一个图书馆吗? 我已经安装了pywavelet,但是我不知道如何将它与opencv结合起来。如果我使用wavedec2命令,它将引发ValueError(“预期的2D输入数据”)
有人能帮我吗?
希望这有帮助
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以获得准确的结果。
cv2.COLOR_BGR2GRAY
2-最大级别_multilevel.py是7而不是10,因此您应该这样做:w2d("test1.png",'db1',7)
_multilevel.py
w2d("test1.png",'db1',7)
希望这有帮助
对Navaneeth的回答是正确的,但有两个修正:
1-Opencv读取图像并将其保存为BGR而不是RGB,因此您应该
cv2.COLOR_BGR2GRAY
以获得准确的结果。2-最大级别
_multilevel.py
是7而不是10,因此您应该这样做:w2d("test1.png",'db1',7)
相关问题 更多 >
编程相关推荐