Вот что я попробовал в 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)