如何重用 pyfftw 对象?
How to resuse a pyfftw object?
也许这只是我的误解,但是你如何重用一个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)
我是不是做错了什么,因为 "planning" 的重点是不必重建 pyfftw 对象?我想只使用相同的 pyfftw 对象(因为我所有的图像都是相同大小的)并且只需更改对象的输入。
这是设计使然。除了显式之外,没有输出数组的副本,所以 img2_fft is img1_fft
returns True
.
您可以使用 .copy()
复制输出,或者您可以从您自己的数组中显式 set the output array。
也许这只是我的误解,但是你如何重用一个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)
我是不是做错了什么,因为 "planning" 的重点是不必重建 pyfftw 对象?我想只使用相同的 pyfftw 对象(因为我所有的图像都是相同大小的)并且只需更改对象的输入。
这是设计使然。除了显式之外,没有输出数组的副本,所以 img2_fft is img1_fft
returns True
.
您可以使用 .copy()
复制输出,或者您可以从您自己的数组中显式 set the output array。