簡體   English   中英

在 numpy 中將 3d arrays 組合成一個 4d 數組

[英]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 張圖像)

  • position X,Y,0處的數組將包含像素X,Y處圖像1,2,3的所有 RED 值
  • position X,Y,1處的數組將包含像素X,Y處圖像 1,2,3 的所有綠色值
  • position 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.

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