Код: Выделить всё
def show_mask(mask, ax):
color = np.array([30/255, 144/255, 255/255, 0.6])
h, w = np.array(mask).shape[-2:]
mask_image = np.array(mask).reshape(h, w, -1) * color.reshape(1, 1, -1)
ax.imshow(mask_image)
fig, axes = plt.subplots()
axes.imshow(pic)
show_mask(pix, axes)
Код: Выделить всё
in :16 │
│ │
│ 13 │
│ 14 axes.imshow(pic) │
│ 15 ground_truth_seg = pic │
│ ❱ 16 show_mask(pix, axes) │
│ 17 # axes.title.set_text(f"Ground truth mask") │
│ 18 # axes.axis("off") │
│ 19 │
│ │
│ in show_mask:9 │
│ │
│ 6 │ h, w = np.array(mask).shape[-2:] │
│ 7 │ print(h) │
│ 8 │ print(w) │
│ ❱ 9 │ mask_image = np.array(mask).reshape(h, w, -1) * color.reshape(1, 1, -1) │
│ 10 │ ax.imshow(mask_image) │
│ 11 │
│ 12 fig, axes = plt.subplots() │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ValueError: operands could not be broadcast together with shapes (1420,3,1080) (1,1,4)
На самом деле в наборе данных есть заданная маска, это то же самое, что я собираюсь сделать?
Ошибка до этого заключалась в том, что изображение не является пустым массивом, я уже изменил размер изображения и конвертировал его в numpy, но проблема остается. Что-то я пропустил?
Детали изображения:
Изображение представляет собой JPEG в классе PIL.Image.Image с размером 1420, 1080.
Изображение хранится в
Код: Выделить всё
pic = picture_dict[0]["img"]
pix = np.array(pic)
Обновление 2: добавление статистики изображения для получения полной информации о создании маски.
Подробнее здесь: https://stackoverflow.com/questions/792 ... 3-and-stil
Мобильная версия