Как я могу сложить более двух массивов изображений вдоль третьего измерения в Python3

Вот что я попробовал в Python3. Я знаю, что проблема в том, что я не могу сложить массивы разных форм, так как изначально, stacked_data будет пустым. Но мне нужно сложить большое количество данных в формате ndarray. И я не могу сделать это, передавая кортеж огромных чисел. Спасибо.

from numpy import *
from cv2 import *
import glob

folder_path = r'C:UsersAdministratorDesktop	rainingWorkWithMamTestingImages/*.jpg'

image_path = []
for path in glob.glob(folder_path):
    image_path.append(path)

stacked_data = empty((19, 3024, 4032))
for path in folder_path:
    image = imread(path, 0)
    stack((stacked_data, image))

Всего 1 ответ


Рекомендуемая форма stacked_data (3024, 4032, 19) , и вы можете заполнять кадры, используя синтаксис: stacked_data[:, :, i] = image .

Форма трехмерного массива показана здесь :
введите описание изображения здесь

Как видите, порядок: (высота, ширина, глубина).

Вы можете использовать счетчик для индексации индекса "глубины" в каждой итерации:

stacked_data = empty((3024, 4032, 19))
i = 0  # Frame counter (index)

for path in folder_path:
    image = imread(path, 0)
    stacked_data[:, :, i] = image
    i += 1

stacked_data[:, :, i] = image означает: установить все в первом и втором измерении stacked_data (кроме индекса третьего измерения i ) в соответствующие значения image .

В Python всегда есть ярлыки ...
Вы можете использовать следующий синтаксис (используя функцию zip ):

stacked_data = empty((3024, 4032, 19))

for path, i in zip(folder_path, range(19)):
    stacked_data[:, :, i] = imread(path, 0)

Есть идеи?

10000