У меня есть 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,]
]
Спасибо!