#python
#python
Вопрос:
я хочу прочитать свою маску, чтобы использовать их в качестве входных данных для моего процесса обучения. мои маски находятся в папке с именем mask (форма моих изображений (128,128,4)) Я использовал этот код
path_folder = "" # the path to the folder containing masks
mask_path= path_folder '/masks/'
mask_file = os.listdir(mask_path)
y_train = np.zeros((len(mask_file), 128, 128, 1), dtype=np.bool)# this is the nump array where Iwant to put my masks
ctr =0
for n, id_ in tqdm(enumerate(mask_file), total=len(mask_file)):
mask = imread(mask_path mask_file[n])
y_train[ctr] = mask
ctr = ctr 1
Я получил эту ошибку
Ошибка значения: не удалось передать входной массив из shape (128,128,4) в shape (128,128,1)
Есть ли у вас какие-либо идеи, что мне делать
Ответ №1:
Я думаю, что проблема может быть здесь:
mask = imread(mask_path mask_file[n])
Попробуйте загрузить изображение как grasycale (я предполагаю, что вы используете OpenCV). Это даст вам изображение с формой (128,128), а затем добавит новое измерение с помощью unsqueeze
.
mask = imread(mask_path mask_file[n], 0)
Ответ №2:
проблема в том, что вы пытаетесь поместить куб на поверхность, либо вы используете только один слой из последнего измерения (из 3), либо для преобразования вашего изображения в оттенки серого.
один из способов сделать это с помощью opencv
y_train[ctr] = cv2.imread('file_path',0)
эта функция считывает изображение ur и преобразует его в форму 124,124,1