Импорт списка из 7 изображений .jpeg (все одинакового размера) и объединение их в массив NxMx7 numpy

Я пытаюсь импортировать изображения для стека в массив numpy. У меня есть что-то подобное, но это не совсем то, что мне нужно, и я не могу найти ответ в Интернете.

import easygui as eg
import cv2
openfiles1 = eg.fileopenbox("Select the files to stack",  multiple=True)
stack = np.array([])
for item in openfiles1:
    pic = cv2.imread(item)
    stack =np.dstack(pic)

Так в чем ошибка?

Alderven 10.04.2019 15:17

форма моего переменного стека (stack.shape) дает (1,3216,2136), а не (7,3216,2136)

Matt M 10.04.2019 15:22
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно документации np.dstack, dstack принимает в качестве аргумента кортеж массивов numpy. Прямо сейчас с каждым циклом вы сбрасываете переменную стека, чтобы она была стеком с кортежем длины 1 (одно изображение, на котором вы сейчас находитесь в цикле). Вместо этого вы, вероятно, хотите что-то вроде этого:

import easygui as eg
import cv2
openfiles1 = eg.fileopenbox("Select the files to stack",  multiple=True)
pics = []
for item in openfiles1:
    pics.append(cv2.imread(item))
stack = np.dstack(tuple(pics))

Это создает список массивов, к которым вы хотите присоединиться (которые вы позже превратите в неизменяемый кортеж).

Другие вопросы по теме