python - 如何使用 PIL 保存图像?

标签 python save python-imaging-library

我刚刚使用 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'

如何使用 Pythons PIL 保存图像?

最佳答案

已处理有关文件扩展名的错误,您可以使用 BMP(不带点)或传递带有扩展名的输出名称。现在要处理错误,您需要正确修改频域中的数据以保存为整数图像,PIL 告诉您它不接受 float 据保存为 BMP。

这是一个建议(进行其他小的修改,例如使用 fftshiftnumpy.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')

关于python - 如何使用 PIL 保存图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14452824/

相关文章:

c++ - 如何编写监听网络流量的程序? (即 wireshark)

python - 根据两个图像的差异创建Alpha叠加图像

python - 有没有办法平滑面部识别中的面部标志?也许通过 PIL ?

python - 如何使用 Python PIL 将图像保存到特定目录?

php - 将数组保存到数据库 mysql/php

c# - 如何将 FileSteam 保存为 PDF 文件

具有 Alpha channel 背景的 Python 文本

Python将简历图像存储在mongodb gridfs中

python - 如何使用 OpenCV 的重映射功能?

python - 测试 SSH 私钥密码(暴力破解)