Я пытаюсь импортировать изображения для стека в массив 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)
форма моего переменного стека (stack.shape) дает (1,3216,2136), а не (7,3216,2136)
Согласно документации 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))
Это создает список массивов, к которым вы хотите присоединиться (которые вы позже превратите в неизменяемый кортеж).
Так в чем ошибка?