我已經創建了一個陣列正是如此:如何將numpy數組轉換爲(並顯示)圖像?
import numpy as np
data = np.zeros((512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
我想這個做的是在512×512圖像的中心顯示一個紅點。 (至少從頭開始...我想我可以從那裏找出其餘的部分)
我已經創建了一個陣列正是如此:如何將numpy數組轉換爲(並顯示)圖像?
import numpy as np
data = np.zeros((512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
我想這個做的是在512×512圖像的中心顯示一個紅點。 (至少從頭開始...我想我可以從那裏找出其餘的部分)
你可以使用PIL創建(和顯示)的圖像:
from PIL import Image
import numpy as np
w, h = 512, 512
data = np.zeros((h, w, 3), dtype=np.uint8)
data[256, 256] = [255, 0, 0]
img = Image.fromarray(data, 'RGB')
img.save('my.png')
img.show()
這工作很好。謝謝。 – jlswint 2010-04-17 18:23:11
似乎有一個錯誤。你創建的數組大小爲'(w,h,3)',但它應該是'(h,w,3)',因爲PIL中的索引與numpy中的索引不同。有相關的問題:http:// stackoverflow。com/questions/33725237/image-fromarray-changes-size – user502144 2015-12-06 18:57:20
@ user502144:謝謝你指出我的錯誤。我應該創建一個形狀數組''(h,w,3)'。 (現在已經固定,在上面)。第一個軸的長度可以被認爲是數組中的行數,第二個軸的長度是列數。因此'(h,w)'對應於一個「高度」「h」和「寬度」「w」的數組。 'Image.fromarray'將這個數組轉換成高度爲'h'和寬度爲'w'的圖像。 – unutbu 2015-12-06 20:47:59
使用pygame,您可以打開一個窗口,以一個像素數組的形式獲取曲面,然後根據需要進行操作。您需要將您的numpy數組複製到曲面數組中,然而,這比在pygame曲面上進行實際的圖形操作要慢得多。
Python Imaging Library可以使用Numpy陣列顯示圖像。看看這個頁面代碼示例:
編輯:由於在該頁面底部的通知上說,你應該檢查最新的發行說明,這使得這個簡單得多:
這不回答問題 – 2018-01-18 02:00:18
最短路徑使用scipy
,像這樣:
from scipy.misc import toimage
toimage(data).show()
這需要安裝PIL或Pillow。
類似的方法也需要PIL或枕頭但可以調用不同的觀衆是:
from scipy.misc import imshow
imshow(data)
你剛纔說這個?
from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()
參見http://stackoverflow.com/questions/902761/saving-a-numpy-array-as-儘管那個人強加了PIL不能使用的限制。 – 2010-04-17 18:01:47