我刚刚使用 Python 图像库 (PIL) 完成了一些图像处理,使用我之前发现的一篇文章来执行图像的傅里叶变换,但我无法让保存功能正常工作。整个代码工作正常,但它只是不会保存结果图像:
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 PIL 保存图像?
有关文件扩展名的错误已得到处理,您可以使用BMP
(不带点)或传递带有扩展名的输出名称。现在要处理错误,您需要正确修改频域中的数据以保存为整数图像,PIL
告诉您它不接受浮点数据保存为 BMP。
这是一个建议(还有其他一些小的修改,比如使用fftshift
and numpy.array
代替numpy.asarray
)进行转换以实现正确的可视化:
import sys
import numpy
from PIL import Image
img = Image.open(sys.argv[1]).convert('L')
im = numpy.array(img)
fft_mag = numpy.abs(numpy.fft.fftshift(numpy.fft.fft2(im)))
visual = numpy.log(fft_mag)
visual = (visual - visual.min()) / (visual.max() - visual.min())
result = Image.fromarray((visual * 255).astype(numpy.uint8))
result.save('out.bmp')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)