pythonopencvimage-processingdwt

How to Combine pyWavelet and openCV for image processing?


I need to do an image processing in python. i want to use wavelet transform as the filterbank. Can anyone suggest me which one library should i use? I had pywavelet installed, but i don't know how to combine it with opencv. If i use wavedec2 command, it raise ValueError("Expected 2D input data.")

Can anyone help me?


Solution

  • Hope this helps

    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)