Como desenhar um retângulo na imagem em Matplotlib
Quando precisamos desenhar um retângulo sobre uma imagem ou figura simples em Matplotlib, o retângulo
de matplotlib.patches
deve ser adicionado aos eixos pelo método add_patch
.
Um Matpotlib patch
é um artista 2-D que tem uma cor de face e borda. Matplotlib tem patches
como,
Arc
Arrow
ArrowStyle
BoxStyle
Circle
CirclePolygon
ConnectionPatch
ConnectionStyle
Ellipse
FancyArrow
FancyArrowPatch
FancyBboxPatch
Patch
Path
PathPatch
Polygon
Rectangle
RegularPolygon
Shadow
Wedge
O patch Rectangle
desenha um retângulo com uma coordenada especificada de canto inferior esquerdo e largura e altura especificadas.
Rectangle(xy, width, height, angle=0.0, fill=True, **kwargs)
xy
é um tuple de comprimento-2 para especificar as coordenadas do canto inferior esquerdo do retângulo a ser desenhado,
width
é a largura do retângulo,
height
é a altura do retângulo,
angle
é o ângulo em graus no sentido anti-horário.
O fill
especifica se o retângulo é preenchido com o facecolor
.
Alguns kwargs
válidos são,
edgecolor
: a cor das bordas do retângulofacecolor
: a cor preenchida do retângulo
Rectângulo de desenho em 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()
O remendo retangular é criado pelo construtor,
patches.Rectangle((1, 1), 1, 2, edgecolor="blue", facecolor="red", fill=True)
Sua coordenada inferior esquerda é (1, 1)
, sua largura é 1
e sua altura é 2
.
A cor da borda é especificada como blue
, enquanto que a cor preenchida é red
.
O método add_patch(P)
do objeto Axes
acrescenta um Patch
- p
ao axis
.
Se o fill
estiver definido para ser False
, o retângulo não será preenchido mesmo que facecolor
seja especificada com alguma cor.
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()
Rectângulo de desenho na imagem em Matplotlib
Se precisarmos desenhar um retângulo sobre uma imagem em Matplotlib, é semelhante à abordagem acima, mas com a etapa extra para obter o cabo 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()
O plt.imshow(im)
exibe a imagem butterfly.jpg
e o cabo de Axes
poderia ser obtido pela função plt.gca()
cujo gca
significa 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 Facebook