簡體   English   中英

如何將 numpy 數組轉換為內存中的 pil 圖像?

[英]How can i convert numpy array to pil image in memory?

我有熱圖,它是標准化的 2d numpy 數組

當我用 matplotlib 繪制它時:

axes_img = plt.imshow(255 * normalized_heat_map, alpha=alpha, cmap=cmap)
plt.show()

在此處輸入圖像描述

然而,當我將它轉換為 PIL 圖像然后再次繪制時

heatmap_image = Image.fromarray(np.uint8(axes_img.get_cmap()(axes_img.get_array()) * 255))
plt.imshow(np.asarray(heatmap_image))
plt.show()

在此處輸入圖像描述

如何在不保存到文件的情況下從 Matplotlib 獲取與一張相同的圖像?

函數imshow將色標的限制調整為您正在繪制的數據的最小值和最大值。 如果記住這一點,就會意識到在將圖像數組轉換為 8 位數組之前必須對其進行歸一化。 這可以按如下方式完成:

scaled_img = (axes_img.get_array()-axes_img.get_clim()[0])/(axes_img.get_clim()[1]-axes_img.get_clim()[0])
heatmap_image = Image.fromarray(np.uint8(axes_img.get_cmap()(scaled_img) * 255))

暫無
暫無

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

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