Я попробовал этот код из руководства по маскировке изображения:
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)
Обновление 1: добавьте полное сообщение об ошибке.
Обновление 2: добавлю статистику изображения для получения полной информации о создании маски.
Обновление 3: при необходимости вот изображение . Это изображение из RIWA, размер которого я изменяю с помощью этой функции.
from PIL import Image
import os
def resize_image(image_path, target_size=(1420, 1080)):
# Open an image using PIL
img = Image.open(image_path)
# Resize image to target size
img_resized = img.resize(target_size)
return img_resized
input_dir = '/river-water-segmentation-dataset/riwa_v2/validation/masks'
output_dir = '/river-water-segmentation-dataset/riwa_v2/validation/masks/crop'
# Loop through all image files in the directory
for filename in os.listdir(input_dir):
if filename.endswith('.jpg') or filename.endswith('.png'):
image_path = os.path.join(input_dir, filename)
resized_img = resize_image(image_path, target_size=(1420, 1080)) # Resize to 300x300 or any size you want
# Save the resized image to the output directory
resized_img.save(os.path.join(output_dir, f'resized_{filename}'))
Подробнее здесь: https://stackoverflow.com/questions/792 ... 3-and-stil
Преобразовал изображение в массив numpy, изменил его размер, чтобы его можно было разделить на 3, и при этом он по-прежн ⇐ Python
Программы на Python
1732621214
Anonymous
Я попробовал этот код из руководства по маскировке изображения:
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)
Обновление 1: добавьте полное сообщение об ошибке.
Обновление 2: добавлю статистику изображения для получения полной информации о создании маски.
Обновление 3: при необходимости вот изображение . Это изображение из RIWA, размер которого я изменяю с помощью этой функции.
from PIL import Image
import os
def resize_image(image_path, target_size=(1420, 1080)):
# Open an image using PIL
img = Image.open(image_path)
# Resize image to target size
img_resized = img.resize(target_size)
return img_resized
input_dir = '/river-water-segmentation-dataset/riwa_v2/validation/masks'
output_dir = '/river-water-segmentation-dataset/riwa_v2/validation/masks/crop'
# Loop through all image files in the directory
for filename in os.listdir(input_dir):
if filename.endswith('.jpg') or filename.endswith('.png'):
image_path = os.path.join(input_dir, filename)
resized_img = resize_image(image_path, target_size=(1420, 1080)) # Resize to 300x300 or any size you want
# Save the resized image to the output directory
resized_img.save(os.path.join(output_dir, f'resized_{filename}'))
Подробнее здесь: [url]https://stackoverflow.com/questions/79225790/transformed-image-to-numpy-array-resized-it-so-it-can-be-divided-by-3-and-stil[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия