gpt4 book ai didi

python - PIL 无法处理此数据类型

转载 作者:太空狗 更新时间:2023-10-29 23:55:47 25 4
gpt4 key购买 nike

我正在尝试在 numpy 中使用 fft 模块:

import Image, numpy

i = Image.open('img.png')
a = numpy.asarray(i, numpy.uint8)

b = abs(numpy.fft.rfft2(a))
b = numpy.uint8(b)

j = Image.fromarray(b)
j.save('img2.png')

但是,当我尝试将 numpy 数组转换回 PIL 图像时,出现错误:

TypeError: Cannot handle this data type

但是,a 和 b 数组似乎具有相同的数据类型 (uint8),执行 Image.fromarray(a) 运行良好。我确实注意到形状略有不同(a.shape = (1840, 3264, 3) vs b.shape = (1840, 3264, 2))。

我确实解决了这个问题并找出 PIL 接受哪些数据类型?

最佳答案

我认为 rfft2 可能在错误的轴上执行。默认情况下,它使用最后两个轴:axes=(-2,-1)。第三个轴表示 RGB channel 。相反,人们想要在空间轴上执行 FFT 似乎更合理,axes=(0,1):

import Image
import numpy as np

i = Image.open('image.png').convert('RGB')
a = np.asarray(i, np.uint8)
print(a.shape)

b = abs(np.fft.rfft2(a,axes=(0,1)))
b = np.uint8(b)
j = Image.fromarray(b)
j.save('/tmp/img2.png')

关于python - PIL 无法处理此数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7700193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com