Как нарисовать прямоугольник на изображении в Matplotlib

Когда нам нужно нарисовать прямоугольник на изображении или простой фигуре в Matplotlib, к осям следует добавить патч прямоугольник
из matplotlib.patches
методом add_patch
.
A matpotlib patch
- это 2-D художник, который имеет цвет лица и края. Matpotlib имеет патч
типа,
Arc
Arrow
ArrowStyle
BoxStyle
Circle
CirclePolygon
ConnectionPatch
ConnectionStyle
Ellipse
FancyArrow
FancyArrowPatch
FancyBboxPatch
Patch
Path
PathPatch
Polygon
Rectangle
RegularPolygon
Shadow
Wedge
Rectangle
патч рисует прямоугольник с заданной координатой нижнего левого угла и заданной шириной и высотой.
Rectangle(xy, width, height, angle=0.0, fill=True, **kwargs)
xy
- это кортеж длиной 2, задающий координаты нижнего левого угла рисуемого прямоугольника,
width
- это ширина прямоугольника,
height
- это высота прямоугольника,
angle
- это угол против часовой стрелки в градусах.
fill
указывает, заполнен ли прямоугольник facecolor
.
Некоторые действительные kwargs
,
edgecolor
: цвет краев прямоугольника.facecolor
: цвет прямоугольника с заливкой.
Нарисуйте прямоугольник в Matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig, ax = plt.subplots()
ax.plot([1,4],[1,4])
ax.add_patch(
patches.Rectangle(
(1, 1),
0.5,
0.5,
edgecolor = 'blue',
facecolor = 'red',
fill=True
) )
plt.show()
Прямоугольный патч создается конструктором,
patches.Rectangle(
(1, 1),
1,
2,
edgecolor = 'blue',
facecolor = 'red',
fill=True
)
Координата левого нижнего угла - (1, 1)
, ширина - 1
и высота - 2
.
Цвет края указан как синий, цвет заливки - красный.
Метод add_patch(P)
объекта Axes
добавляет Patch
- p
к оси
.
Если fill
задано как False
, то прямоугольник не будет заполнен, даже если задан какой-то цвет facecolor
.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig, ax = plt.subplots()
ax.plot([1,4],[1,4])
ax.add_patch(
patches.Rectangle(
(1, 1),
1,
2,
edgecolor = 'blue',
facecolor = 'red',
fill=False
) )
plt.show()
Нарисуйте прямоугольник на изображении в Matplotlib
Если нам нужно нарисовать прямоугольник на изображении в Matplotlib, то это похоже на описанный выше подход, но с дополнительным шагом, чтобы получить рукоятку Axes
.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from PIL import Image
im = Image.open('butterfly.jpg')
plt.imshow(im)
ax = plt.gca()
rect = patches.Rectangle((80,10),
70,
100,
linewidth=2,
edgecolor='cyan',
fill = False)
ax.add_patch(rect)
plt.show()
plt.imshow(im)
отображает изображение butterfly.jpg
, а хэндл Axes
может быть получен функцией plt.gca()
чей gca
означает get current axes
.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn