не удалось передать входной массив из формы (128,128,4) в форму (128,128,1)

#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