0

也许这只是我的误解,但是您如何重用 pyfftw 对象?

当我运行类似以下代码时,img1_fft尽管img2_fft接收到不同的输入,但它们是相同的。当我取消注释重建的行时fftwObj,我得到了所需的输出。

inArray = pyfftw.empty_aligned(optimalSize, dtype='complex64')
inArray[ 0:img1.shape[0] , 0:img1.shape[1] ] = img1;
fftwObj = pyfftw.builders.fft2(inArray)
img1_fft = fftwObj(inArray)

inArray = pyfftw.empty_aligned(optimalSize, dtype='complex64')
inArray[ 0:img2.shape[0] , 0:img2.shape[1] ] = img2;
# fftwObj = pyfftw.builders.fft2(inArray)
img2_fft = fftwObj(inArray)

我是不是做错了什么,因为“计划”的重点是不必重建 pyfftw 对象?我想只使用相同的 pyfftw 对象(因为我所有的图像都是相同的大小)并且只需更改对象的输入。

4

1 回答 1

1

这是设计使然。除了显式之外,没有输出数组的副本,因此img2_fft is img1_fft返回True

您可以使用 复制输出.copy(),也可以从您自己的数组中显式设置输出数组。

于 2017-07-12T13:02:15.797 回答