2014-07-02 3 views
1

Мне нужно сделать обработку изображения в python. Я хочу использовать вейвлет-преобразование в качестве фильтра. Может ли кто-нибудь предложить мне, какую библиотеку я должен использовать? У меня была установлена ​​pywavelet, но я не знаю, как ее сочетать с opencv. Если я использую команду wavedec2, она вызывает ValueError («Ожидаемые 2D входные данные.»)Как объединить pyWavelet и openCV для обработки изображений?

Может ли кто-нибудь мне помочь?

ответ

9

Надеется, что это помогает

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) 
+0

он работает хорошо и дать мне некоторые идеи, спасибо большое! – rizkie

2

Ответ Navaneeth является правильным, но с два коррекцией:

1- OpenCV читать и сохранять изображения, как BGR не RGB, так что вы должны сделать cv2.COLOR_BGR2GRAY быть точным , Уровень

2- Maximun из _multilevel.py 7 не 10, так что вы должны сделать: w2d("test1.png",'db1',7)

 Смежные вопросы

  • Нет связанных вопросов^_^