我在將一個4D numpy數組重塑成2D numpy數組時遇到了一些麻煩。目前,numpy數組如下(35280L,1L,32L,32L)。格式是圖像的數量,通道,寬度,高度。基本上,我有35280 32×32的圖像塊,我想結合圖像塊(保留索引)來創建一個大的圖像。你會如何將來自numpy數組的圖像集合重塑爲一個大圖像?
回答
您有一個數組是這樣的:
images = np.random.randint(0,256,(35280, 1, 32, 32))
你需要的第一件事情就是搞清楚(在某種程度上)是什麼最終圖像的寬度應該是。假設這個例子是(441 * 32, 80 * 32)
。
然後,你可以這樣做:
image = images.swapaxes(0,2).reshape((441 * 32, -1))
這給了你,你需要幾乎什麼,除了行交錯,所以你必須:
AAABBBCCC
DDDEEEFFF
GGGHHHIII
AAABBBCCC
DDDEEEFFF
GGGHHHIII
然後,您可以用「花哨索引」來重新排列行:
image[np.array([0,3,1,4,2,5])]
現在您有:
AAABBBCCC
AAABBBCCC
DDDEEEFFF
DDDEEEFFF
GGGHHHIII
GGGHHHIII
我將作爲練習留下您生成花哨索引序列的部分。
重新塑造是不夠的,你必須仔細重新排列你的數據與swapaxes
。
的樣本數據:
dims=nbim,_,h,w=np.array([6,1,7,6])
data=arange(dims.prod()).reshape(dims)%256
的圖像:
figure()
for i in range(nbim):
subplot(1,nbim,i+1)
imshow(data[i,0],vmin=0,vmax=255)
和大圖:
#number of images in each dim :
nh = 2 # a choice
nw=nbim // nh
bigim=data.reshape(nh,nw,h,w).swapaxes(1,2).reshape(nh*h,nw*w)
figure()
imshow(bigim)
呃,插值......'matshow'讓生活變得輕鬆 –
,你應該提一下關於fortran vs c的命令 –
下次爲'matshow'確定好了。我認爲所有圖像格式今天都是'C'對齊的,因此在這裏講Fortran佈局會增加混淆。 –
- 1. 如何將多維數組重塑爲2D圖像?
- 2. 重塑包含圖像數據的numpy數組
- 3. 如何重塑存儲彩色圖像序列(RGB)的numpy數組的數據?
- 4. 將Numpy數組轉換爲圖像
- 5. 將numpy數組轉換爲圖像
- 6. 重塑一個數組的Python/numpy的
- 7. 如何用numpy重塑這個數組?
- 8. 如何將幾個NSImages組合成一個大圖像?
- 9. Pyglet將一組圖像繪製成一個較大的圖像
- 10. 如何將兩張圖像合併爲一張圖像,並將兩張圖像合併爲一張圖像,然後再將第二張圖像合成一張?
- 11. 在單個繪圖中顯示來自numpy數組的多個圖像
- 12. matlab和圖像中的重塑函數
- 13. 使用.NET將兩個PNG圖像組合成一個圖像
- 14. 用ChunkyPNG將多個圖像「條」組合成一個圖像
- 15. 作爲圖像,圖像通道的numpy數組
- 16. 將同一圖像對象添加到集合中會從第一個添加的集合中刪除圖像
- 17. 創建Numpy數組圖像
- 18. 如何將numpy數組轉換爲(並顯示)圖像?
- 19. 在html中,你如何將圖像與其他圖像重疊?
- 20. 將圖像分組到一個圖像
- 21. 的Python:重塑3D圖像的numpy的陣列和標籤
- 22. 將圖像加載到numpy數組中
- 23. 如何在數字微圖中將圖像的幀合併成一個圖像?
- 24. 將一個按鈕組合成圖像
- 25. 堆疊圖像作爲numpy數組
- 26. 將兩個圖像合併爲一個透明圖像
- 27. 顯示來自一個numpy陣列的多個圖像
- 28. 來自numpy數組的PyopenCL 3D RGBA圖像
- 29. 將多個圖像合併爲一個
- 30. 如何顯示來自畫布集合的圖像?
什麼應該是二維數組的形狀? 「保持指數」是什麼意思? – hpaulj
你想如何組合圖像塊? – Tonechas