Saya baru saja melakukan beberapa pemrosesan gambar menggunakan Python image library (PIL) menggunakan postingan yang saya temukan sebelumnya untuk melakukan transformasi fourier gambar dan saya tidak dapat mengaktifkan fungsi save. Seluruh kode berfungsi dengan baik tetapi itu tidak akan menyimpan gambar yang dihasilkan:
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")
Kesalahan yang saya dapatkan adalah sebagai berikut:
save_handler = SAVE[string.upper(format)] # unknown format
KeyError: '.BMP'
Bagaimana cara menyimpan gambar dengan Pythons PIL?
sumber
fft2
bukanrfft2
karena untuk data diskrit Saya tidak melihat titik dalam menggunakan nanti. Sisanya adalah murni kosmetik, yaitu, Anda tidak akan dapat memvisualisasikan transformasi Fourier dengan baik tanpa menerapkan faktor log padanya. Kemudian normalisasi adalah untuk membuat hal-hal sederhana untuk konversi ke kisaran [0, 255].visual = (visual - visual.min()) / (visual.max() - visual.min())
akan default jikavisual
tidak memiliki varian (tidak mungkin, tetapi layak untuk ditangkap)Anda seharusnya dapat membiarkan PIL mendapatkan jenis file dari ekstensi, yaitu menggunakan:
sumber
numpy.uint8
dtype daripada float.Coba hapus
.
sebelum.bmp
(tidak cocokBMP
seperti yang diharapkan). Seperti yang Anda lihat dari kesalahannya,save_handler
adalah casing atas yangformat
Anda berikan dan kemudian mencari kecocokanSAVE
. Namun kunci yang sesuai dalam objek itu adalahBMP
(bukan.BMP
).Saya tidak tahu banyak tentang
PIL
, tetapi dari beberapa pencarian cepat di sekitar tampaknya itu adalah masalah denganmode
gambar. Mengubah definisij
menjadi:Tampaknya berhasil untuk saya (namun perhatikan bahwa saya memiliki sedikit pengetahuan tentang
PIL
, jadi saya sarankan menggunakan solusi @mmgp karena dia jelas tahu apa yang mereka lakukan :)). Untuk jenismode
, saya menggunakan halaman ini - semoga salah satu pilihan di sana akan bekerja untuk Anda.sumber
Saya tahu ini sudah lama, tetapi saya telah menemukan bahwa (saat menggunakan Pillow) membuka file dengan menggunakan
open(fp, 'w')
dan kemudian menyimpan file akan berhasil. Misalnya:fp
menjadi jalur file, tentu saja.sumber
format
parameter harus digunakan jika objek file digunakan disave
. Apakah ini tidak perlu?