Как повторно использовать объект pyfftw?
Возможно, это просто мое недоразумение, но как вы повторно используете объект 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 (поскольку все мои изображения имеют одинаковый размер) и просто изменить входные данные для объекта.
1 ответ
Это по замыслу. Там нет копии выходного массива, кроме как в явном виде, поэтому img2_fft is img1_fft
возвращается True
,
Вы можете скопировать вывод, используя .copy()
или вы можете явно установить выходной массив из вашего собственного массива.