объединить 3D-массивы в 4D-массив в NumPy - PullRequest
1 голос
/ 10 ноября 2019

У меня есть 3 изображения одинакового размера, я читаю каждое из них, используя matplotlib.image.imread , которое возвращает массив 3D numpy .

(Height, Width, ChannelsNumber) # ChannelsNumber = 3 for RGB

Теперь я хочу объединить 3 изображения в массив 4D, например, так:

(Height, Width, ChannelsNumber, NumberOfImages)

Это означает, что массив 3-го измерения в позиции (X,Y) больше не будет содержать значения RGB для пикселя (X,Y), но будетсодержит 3 массива по одному для каждого канала (), где каждый массив будет содержать 3 значения R, G, r B (для 3 изображений)

  • массив в позиции X,Y,0 будет содержать все КРАСНЫЕ значения для изображений1,2,3 в пикселях X,Y
  • массив в позиции X,Y,1 будет содержать все ЗЕЛЕНЫЕ значения для изображений 1,2,3 в пикселях X,Y
  • массив в позиции X,Y,2 будетсодержит все СИНИЕ значения для изображений 1,2,3 в пикселях X,Y

Например:

(10,15,0) будет массивом, содержащим все КРАСНЫЕ значения для всех изображенийдля пикселя (10,15)

Вот что я пробовал:

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))

это возвращает трехмерный массив, где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,]
]

Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 ноября 2019

ответ один Скотт прокомментировал

x = np.stack((img1, img2, img3), axis = -1)
1 голос
/ 10 ноября 2019

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))

Последовательность стеков массивов по вертикали

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...