2015-06-22 4 views
1

Я хочу использовать быстрое преобразование Фурье, но уже попытка простого преобразования назад и вперед не работает. КодТипError: src data type = 15 не поддерживается

import cv2 
import numpy as np 

img = cv2.imread('Picture.bmp',0) 
f = np.fft.fft2(img) 
fshift = np.fft.fftshift(f) 
f_ishift = np.fft.ifftshift(fshift) 
img_back = cv2.idft(f_ishift) 
img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1]) 

и ошибка

Traceback (most recent call last): 
    File "test.py", line 8, in <module> 
    img_back = cv2.idft(f_ishift) 
TypeError: src data type = 15 is not supported 

Как это можно исправить?

ответ

0

Я думаю, что понял. cv2.idft() хочет, чтобы комплексные числа были в другом формате. Мне пришлось извлечь реальную и мнимую часть отдельно и записать их в третьем измерении:

import cv2 
import numpy as np 

img = cv2.imread('Bild.bmp',0) 
f = np.fft.fft2(img) 
fshift = np.fft.fftshift(f) 
f_ishift = np.fft.ifftshift(fshift) 
d_shift = np.array(np.dstack([f_ishift.real,f_ishift.imag])) 
img_back = cv2.idft(d_shift) 
img = cv2.magnitude(img_back[:,:,0],img_back[:,:,1])