python — matplotlib: как нарисовать прямоугольник на изображении
спросил
Изменено 6 месяцев назад
Просмотрено 424 тыс. раз
Как нарисовать прямоугольник на изображении, например:
импортировать matplotlib.pyplot как plt из изображения импорта PIL импортировать numpy как np im = np.array(Image.open('dog.png'), dtype=np.uint8) plt.imshow(им)
Я не знаю, что делать дальше.
- python
- image
- matplotlib
Вы можете добавить патч Rectangle
к осям matplotlib.
Например (используя изображение из учебника здесь):
импортировать matplotlib.pyplot как plt импортировать matplotlib.patches как патчи из изображения импорта PIL im = Image.open('stinkbug.png') # Создать фигуру и оси рис, топор = plt.subplots() # Показать изображение ax.imshow(им) # Создаем прямоугольную заплатку rect = patches.Rectangle((50, 100), 40, 30, linewidth=1, edgecolor='r', facecolor='none') # Добавляем патч в Оси ax.add_patch (прямой) plt.show()
11
Нет необходимости в подграфиках, и pyplot может отображать изображения PIL, поэтому это можно упростить еще больше:
импортировать matplotlib.pyplot как plt из matplotlib.patches импортировать прямоугольник из изображения импорта PIL im = Image.open('stinkbug.png') # Показать изображение plt.imshow(им) # Получить текущую ссылку топор = plt.gca() # Создаем прямоугольную заплатку прямоугольник = прямоугольник ((50 100), 40, 30, ширина линии = 1, цвет края = 'r', цвет лица = 'нет') # Добавляем патч в Оси ax.add_patch (прямой)
Или короткая версия:
импортировать matplotlib.pyplot как plt из matplotlib.patches импортировать прямоугольник из изображения импорта PIL # Показать изображение plt.imshow(Image.open('stinkbug.png')) # Добавляем патч в Оси plt.gca().add_patch(Прямоугольник((50,100),40,30,linewidth=1,edgecolor='r',facecolor='none'))
0
Вам нужны патчи.
импортировать matplotlib.pyplot как plt импортировать matplotlib.patches как патчи рис2 = plt.figure() ax2 = fig2.add_subplot (111, аспект = 'равный') ax2.add_patch( патчи.Прямоугольник( (0,1, 0,1), 0,5, 0,5, fill=False # удалить фон )) fig2.savefig('rect2.png', dpi=90, bbox_inches='плотно')
1
Насколько я понимаю, matplotlib — это библиотека для построения графиков.
Если вы хотите изменить данные изображения (например, нарисовать прямоугольник на изображении), вы можете использовать PIL ImageDraw, OpenCV или что-то подобное.
Вот метод PIL ImageDraw для рисования прямоугольника.
Вот один из методов OpenCV для рисования прямоугольника.
Ваш вопрос касался Matplotlib, но, вероятно, нужно было просто задать вопрос о рисовании прямоугольника на изображении.
Вот еще один вопрос, касающийся того, что, я думаю, вы хотели знать: Нарисуйте прямоугольник и текст в нем, используя PIL
. Если у вас есть набор координат упорядоченных точек, вы также можете использовать функцию plot
и построить их напрямую, без использования патча Rect. Здесь я воссоздаю пример, предложенный @tmdavison, используя это:
import matplotlib.pyplot as plt импортировать matplotlib.patches как патчи из изображения импорта PIL im = Image.open('/content/stinkbug.png') # Создать фигуру и оси рис, топор = plt.subplots() # Показать изображение ax.imshow(им) # Координаты вершин прямоугольника # по часовой стрелке хз = [50, 90, 90, 50, 50] г = [100, 100, 130, 130, 100] ax.plot(xs, ys, цвет = "красный") plt.show()
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Требуется, но не отображается
3 быстрых способа нарисовать прямоугольник/квадрат/коробку в GIMP GIMP с помощью нескольких простых инструментов.

Быстрая навигация
- Способ 1. Создание сплошной фигуры
- Шаг 1. Создание выделения
- Шаг 2. Заполнение выделения
- Способ 2. Создание контурной фигуры
- Шаг 2. Нанесите обводку
Способ 1. Создание сплошной фигуры
Этот метод позволит вам создавать сплошные фигуры, заполненные одним цветом, узором или градиент. Если вы хотите создать обведенную фигуру, попробуйте метод 2 или метод 3.
Шаг 1: Создайте выделение
Открыв изображение в GIMP, переключитесь на инструмент Rectangle Select , используя набор инструментов или нажав сочетание клавиш R .
Нажмите и перетащите изображение, чтобы создать выбранный прямоугольник или квадрат. GIMP обрисует выделение и предоставит маркеры регулировки в четырех углах для изменения размера и вдоль каждого края для ограниченного изменения размера вдоль одного края (хотя они будут скрыты, пока вы не наведете курсор на выделение).
Вы также можете удерживать нажатой клавишу Alt ( Option на Mac) и щелкнуть и перетащить, чтобы изменить положение всей области выделения.
Панель «Параметры инструмента» с доступными параметрами для инструмента «Прямоугольное выделение»Если вы хотите указать точное местоположение, не делая выделение вручную, вы также можете использовать панель «Параметры инструмента» в левой док-станции. для ввода определенного местоположения и размера в зависимости от верхнего левого угла области выбора.
Вам нужно уже начать рисовать выделение, и GIMP изменит его для вас на основе вашего ввода.
Когда вы будете довольны размером и положением вашего выбора, нажмите клавишу Enter , чтобы завершить его.
Шаг 2: Заполните свой выбор
А теперь самое интересное! Если вы хотите заполнить область выделения сплошным цветом, выберите его с помощью палитры цветов в нижней части панели инструментов. Верхний левый образец цвета — это цвет переднего плана, а нижний правый образец цвета — цвет фона. 9. Проверьте панель Параметры инструмента и убедитесь, что для параметра Тип заливки установлено значение Цветная заливка FB (хотя вы можете использовать Цветная заливка BG или Узорная заливка , если хотите), а Затронутая область установите значение Весь выбор.
Затем просто щелкните в любом месте вашего выделения, и GIMP заполнит его выбранным вами цветом или узором.
Выделение теперь заполнено цветом переднего плана Если вы не хотите использовать инструмент «Заливка заливки», вы можете быстро заполнить область выделения текущим цветом переднего плана, нажав Ctrl + , (это запятая, если непонятно) или залейте текущим цветом фона, нажав Ctrl + . (это точка, хотя моя программа проверки грамматики от нее без ума).
Вы также можете заполнить выделение градиентом, переключившись на 9Инструмент 0126 Gradient , который вложен в набор инструментов под инструментом Bucket Fill , или вы можете использовать сочетание клавиш G . Установите желаемые параметры инструмента, а затем щелкните и перетащите в любом месте выделенного фрагмента, чтобы заполнить его выбранными настройками градиента.
GIMP демонстрирует базовую градиентную заливкуВы можете повторять этот процесс столько раз, сколько хотите, хотя я рекомендую размещать каждый отдельный прямоугольник/квадрат/поле на отдельном слое, чтобы вы могли перемещать их независимо друг от друга. другое позже.
Метод 2. Создание обведенной фигуры
Этот метод очень похож на метод 1, хотя мы будем использовать другую технику для создания контура выделения вместо сплошного цвета, градиента или заливки узором.
Шаг 1. Создание выделения
Создайте выделение, как и раньше, с помощью инструмента «Прямоугольное выделение». Я не буду повторять одни и те же детали еще раз, так как это довольно простой шаг.
Шаг 2. Нанесите штрих
Если вы не знакомы с терминологией, это не какое-то страшное заболевание, которое может повлиять на ваше изображение. Вместо этого применение обводки, по сути, означает нанесение линии или мазка вокруг выделенной области.
Откройте меню Правка и щелкните Выбор обводки .
Я не уверен, почему это находится в меню «Правка», а не в меню «Выбор». .Вы можете применить простую линию, узор или даже инструмент рисования с эмулированной динамикой ввода кисти, хотя эта динамика не будет такой эффективной, как если бы вы действительно нарисовали мазок вручную.
Выберите все настройки и нажмите кнопку Stroke , чтобы завершить их.
Это, вероятно, самый гибкий способ создания прямоугольника/поля/квадрата в GIMP, и его можно комбинировать с Методом 1 или Методом 3 для создания более сложных эффектов.
Метод 3: рисование прямых линий в GIMP
Если вы не хотите использовать ни один из методов выбора, есть последний вариант, который может вам подойти.
В GIMP можно рисовать идеально прямые линии с помощью одной из множества кистей — и я не имею в виду мошенничество с помощью линейки на планшете для рисования, что глупо. Обычно я искренне одобряю глупости, но вы же не хотите повредить поверхность планшета!
Преимущество этого метода в том, что он работает с любыми инструментами GIMP на основе кистей, от кисти до инструмента клонирования, что создает некоторые интересные возможности в зависимости от выбранных вами настроек.
Выберите выбранный инструмент и щелкните в точке, где вы хотите иметь один угол вашей фигуры. Удерживая нажатой клавишу Shift, переместите указатель мыши в следующий угол. Пока вы удерживаете клавишу Shift, GIMP автоматически нарисует прямую линию между двумя точками, показывая путь, по которому пойдет ваш автоматически заполненный штрих.