[英]How to combine NumPy arrays generated in a loop into a single 4D array?
[英]combine 3d arrays into a 4d array in numpy
我有 3 個相同大小的圖像,我使用matplotlib.image.imread讀取每個圖像,它返回一個 3D numpy數組。
(Height, Width, ChannelsNumber) # ChannelsNumber = 3 for RGB
現在,我想將 3 個圖像合並到一個 4D numpy 數組中,如下所示:
(Height, Width, ChannelsNumber, NumberOfImages)
Meaning, the 3rd dimension array at position (X,Y)
will no longer contain RGB values for pixel (X,Y)
but will contain 3 arrays one for each channel (), where each array will contain 3 R, G, r B值(用於 3 張圖像)
X,Y,0
處的數組將包含像素X,Y
處圖像1,2,3
的所有 RED 值X,Y,1
處的數組將包含像素X,Y
處圖像 1,2,3 的所有綠色值X,Y,2
處的數組將包含像素X,Y
處圖像 1,2,3 的所有 BLUE 值例如:
(10,15,0)
將是一個數組,其中包含像素(10,15)
的所有圖像的所有 RED 值
這是我嘗試過的:
import numpy as np
import os
import matplotlib.image as mpimg
img1 = mpimg.imread('./image1.jpg')
img2 = mpimg.imread('./image2.jpg')
img3 = mpimg.imread('./image3.jpg')
x = np.dstack((img1, img2, img3))
這將返回一個 3D 數組,其中第 3 維是一個數組,其中包含以下格式的圖像的 RGB 值:
[R-img1, B-img1, G-img1, R-img2, B-img2, G-img2, R-img3, B-img3, G-img3]
我想要的是:
[
[R-img1, R-img2, R-img3,],
[R-img1, B-img2, -img3,],
[B-img1, B-img2, B-img3,]
]
謝謝 !
import numpy as np import os import matplotlib.image as mpimg img1 = mpimg.imread('1.png') img2 = mpimg.imread('2.png') img3 = mpimg.imread('1.png') print(img1.shape) print(img2.shape) print(img3.shape) x = np.vstack((img1, img2, img3))
垂直順序堆疊arrays
答案是斯科特評論的那個
x = np.stack((img1, img2, img3), axis = -1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.