【问题标题】:TypeError: src data type = 15 is not supportedTypeError:不支持 src 数据类型 = 15
【发布时间】:2015-06-22 21:12:29
【问题描述】:

我想使用快速傅立叶变换,但已经尝试简单的来回变换不起作用。代码是

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

如何解决这个问题?

【问题讨论】:

    标签: python opencv numpy fft ifft


    【解决方案1】:

    我想我明白了。 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])
    

    【讨论】:

      【解决方案2】:

      有时它需要一个绝对值返回,所以你可以使用:np.abs()

      【讨论】:

        猜你喜欢
        • 2017-06-03
        • 2020-09-05
        • 2015-01-18
        • 2020-02-29
        • 2011-03-08
        • 2016-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多