簡體   English   中英

Matplotlib:如何以全分辨率保存圖像?

[英]Matplotlib: How to save an image at full resolution?

我創建了一個馬賽克圖像,這樣一張大圖片由許多小圖片組成。 我可以在 matplotlib 查看器中很好地查看此圖像,並且可以放大以查看所有小圖片。 但是當我保存圖像時,無論擴展名如何,圖像都會失去縮放能力,以至於放大時微小的圖像變得模糊。有沒有辦法以全分辨率保存圖像? 我有一個 numpy 數組中的 rgb 圖像,所以如果有其他更合適的庫也可以使用。

這應該工作:

from PIL import Image

Image.fromarray(numpy_img).save("img_path.png")

我認為您在這里被 Windows 的照片應用程序誤導了,如果您放大太多,它會自動應用模糊。

Matplotlib 使用所有像素值正確保存圖像,您可以通過再次縮放加載圖像的像素來檢查它。

import numpy as np

import matplotlib.pyplot as plt
import matplotlib.image as mpimg


# save image

array = np.random.random((4000, 4000, 3))
plt.imsave("save.png", array)


# load image

img = mpimg.imread("save.png")
plt.imshow(img)
plt.show()

另一種選擇是我編寫的名為numpngw的小型庫。 如果 numpy 數組是img (形狀為 (m, n, 3) 的 8 位或 16 位無符號整數數組),則可以使用:

from numpngw import write_png


write_png('output.png', img)

(如果數組是浮點數,則必須將值轉換為無符號整數。PNG 文件格式不存儲浮點值。)

你可以試試imageio庫: https ://imageio.readthedocs.io/en/stable/userapi.html#imageio.imwrite

from imageio import imwrite

imwrite("image.png", array)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM