我刚刚使用Python图像库(PIL)做了一些图像处理,使用我之前找到的一篇文章来执行图像的傅立叶变换,但是我无法让save函数工作。整个代码运行良好,但它不会保存结果图像:
from PIL import Image
import numpy as np
i = Image.open("C:/Users/User/Desktop/mesh.bmp")
i = i.convert("L")
a = np.asarray(i)
b = np.abs(np.fft.rfft2(a))
j = Image.fromarray(b)
j.save("C:/Users/User/Desktop/mesh_trans",".bmp")
我得到的错误如下:
save_handler = SAVE[string.upper(format)] # unknown format
KeyError: '.BMP'
我怎样才能用Python皮保存图像?
已经处理了有关文件扩展名的错误,您可以使用
bmp
(不带点),也可以使用扩展名传递输出名称。现在要处理错误,您需要在频域中正确地修改数据以保存为整型图像,PIL
告诉您它不接受将浮点数据保存为bmp。这里有一个建议(通过其他一些小的修改,比如使用
fftshift
和numpy.array
,而不是numpy.asarray
)来进行适当的可视化转换:您应该能够简单地让PIL从扩展名中获取文件类型,即使用:
尝试在
.bmp
之前删除.
(它与预期的BMP
不匹配)。从错误中可以看到,save_handler
是您提供的format
的上框,然后在SAVE
中查找匹配项。但是,该对象中对应的键是BMP
(而不是.BMP
)。我对
PIL
了解不多,但从一些快速的搜索来看,这似乎是图像mode
的问题。将j
的定义更改为:似乎对我有用(但是请注意,我对
PIL
的知识非常少,所以我建议使用@mmgp的解决方案,因为他/她清楚地知道他们在做什么:))。对于mode
的类型,我使用了this页面-希望其中一个选项对您有用。相关问题 更多 >
编程相关推荐