我有一個大尺寸的2D numpy的陣列(大小=(2000,2000))僅具有五個可能值1.0,2.0,3.0,4.0和 5.0 。我想將這個數組保存並顯示爲RGB彩色格式的圖像,這裏每個數組的唯一值應該用不同的顏色表示。請幫助我是python的初學者。如何將2d numpy數組保存並顯示爲RGB僞彩色圖像?
1
A
回答
1
matplotlib
對於像這樣的任務很有用,儘管還有其他方法。 下面是一個例子:
import numpy as np
import matplotlib.image
src = np.zeros((200,200))
print src.shape
rgb = np.zeros((200,200,3))
print rgb.shape
src[10,10] = 1
src[20,20] = 2
src[30,30] = 3
for i in range(src.shape[0]):
for j in range(src.shape[1]):
rgb[i,j,0] = 255 if src[i,j]==1 else 0 # R
rgb[i,j,1] = 255 if src[i,j]==2 else 0 # G
rgb[i,j,2] = 255 if src[i,j]==3 else 0 # B
matplotlib.image.imsave('test.png', rgb.astype(np.uint8))
訣竅是將其轉換爲形狀(x, y, 3)
的RGB陣列。您可以使用任何想要生成每像素RGB值的公式。
此外,請注意將其轉換爲uint8
陣列。
1
你可以使用PIL.Image
來做到這一點,但首先轉換你的數組。
可以說,例如,認爲:
- 1.0應該是紅色,表示爲(255,0,0)
- 2.0應該是綠色 - >(0,255,0)
- 3.0應爲藍色 - >(0,0,255)
- 4.0應該是黑色的 - >(0,0,0)
- 5.0應該是白色 - >(255,255,255)
當然,您可以將這些值更改爲您選擇的任何顏色,但這僅用於演示。話雖如此,你的二維數組也需要被「扁平化」爲1-d,以便PIL.Image將其作爲數據接受。
from PIL import Image
import numpy as np
your_2d_array = np.something() # Replace this line, obviously
img_array = []
for x in your_2d_array.reshape(2000*2000):
if x == 1.0:
img_array.append((255,0,0)) # RED
elif x == 2.0:
img_array.append((0,255,0)) # GREEN
elif x == 3.0:
img_array.append((0,0,255)) # BLUE
elif x == 4.0:
img_array.append((0,0,0)) # BLACK
elif x == 5.0:
img_array.append((255,255,255)) # WHITE
img = Image.new('RGB',(2000,2000))
img.putdata(img_array)
img.save('somefile.png')
雖然這應該工作,我覺得有更有效的方式來做到這一點,我不知道,所以,如果有人編輯這個答案有更好的例子,我會很高興。但如果它是一個小應用程序,並且最大的效率不會打擾你,那麼就是這樣。
+1
謝謝Ofer Sadan ... –
相關問題
- 1. 如何重塑存儲彩色圖像序列(RGB)的numpy數組的數據?
- 2. 如何將numpy數組轉換爲(並顯示)圖像?
- 3. 在3D圖中顯示真彩色的2D RGB紋理?
- 4. 如何用全綵色將灰度圖像轉換爲rgb?
- 5. 如何將RGB圖像轉換爲numpy數組?
- 6. numpy的轉化RGB圖像YIQ色彩空間
- 7. 沿着軸以RGB色彩翻譯2D圖像
- 8. 爲什麼不顯示彩色圖像?
- 9. 顯示爲白色圖像的RGB圖像的2D傅立葉變換
- 10. Matplotlib:將繪圖保存爲numpy數組
- 11. 如何使用Gimp/OpenCV Color將圖像分成彩色RGB層?
- 12. 改變表示爲numpy的ndarray爲灰度彩色圖像
- 13. 顯示numpy數組由rgb(255,255,255)作爲圖像,爲什麼它輸出純黑色而不是純白色?
- 14. 將2d數組顯示爲地圖
- 15. Python:如何有效地將2d numpy數組保存到磁盤?
- 16. 將RGB圖像轉換爲H&E色彩空間
- 17. 如何從RGB像素數組中保存圖像?
- 18. 如何在圖像視圖中顯示色彩顏色
- 19. 用`gdal`將大彩色圖像保存爲`GTiff`
- 20. 將灰度圖像保存爲彩色JPEG
- 21. 顯示彩色圖像的子陣列
- 22. 彩色在Winforms灰度圖像顯示
- 23. 如何將HTML表格單元格顯示爲彩色像素?
- 24. 如何在opencv中將RGB圖像與灰色圖像組合?
- 25. plt.imshow顯示IPython中爲灰度圖像彩色圖像
- 26. 如何將3個通道的RGB PIL圖像轉換爲numpy數組?
- 27. 如何使用Opencv 2.4將python numpy數組轉換爲RGB圖像?
- 28. 如何在RGB圖像中將紅色與藍色交換並保持亮度?
- 29. Kinect不顯示彩色圖像
- 30. Android - 保存佈局作爲圖像顯示黑色圖像
謝謝先生......我已經這樣做了。 –
不是問題!你能接受我的回答嗎? – keredson
先生,我是在stackoverflow.com上新註冊的。只要我的聲望超過15,我已經接受了你的回答。我的接受將會出現。再次感謝你幫助我 –