Antworten:
Sie können Rectangle
den matplotlib-Achsen einen Patch hinzufügen.
Zum Beispiel (mit dem Bild aus dem Tutorial hier ):
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from PIL import Image
import numpy as np
im = np.array(Image.open('stinkbug.png'), dtype=np.uint8)
# Create figure and axes
fig,ax = plt.subplots(1)
# Display the image
ax.imshow(im)
# Create a Rectangle patch
rect = patches.Rectangle((50,100),40,30,linewidth=1,edgecolor='r',facecolor='none')
# Add the patch to the Axes
ax.add_patch(rect)
plt.show()
fill=False
Flagge anRectangle
patches.Rectangle
besagt, dass die ersten beiden Zahlen sind The bottom and left rectangle coordinates
. Ich sehe hier, dass die ersten beiden Zahlen (50.100) der oberen und linken Koordinate des Rechtecks entsprechen. Ich bin verwirrt.
Sie müssen Patches verwenden.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig2 = plt.figure()
ax2 = fig2.add_subplot(111, aspect='equal')
ax2.add_patch(
patches.Rectangle(
(0.1, 0.1),
0.5,
0.5,
fill=False # remove background
) )
fig2.savefig('rect2.png', dpi=90, bbox_inches='tight')
Es sind keine Unterzeichnungen erforderlich, und Pyplot kann PIL-Bilder anzeigen, sodass dies weiter vereinfacht werden kann:
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from PIL import Image
im = Image.open('stinkbug.png')
# Display the image
plt.imshow(im)
# Get the current reference
ax = plt.gca()
# Create a Rectangle patch
rect = Rectangle((50,100),40,30,linewidth=1,edgecolor='r',facecolor='none')
# Add the patch to the Axes
ax.add_patch(rect)
Oder die Kurzversion:
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from PIL import Image
# Display the image
plt.imshow(Image.open('stinkbug.png'))
# Add the patch to the Axes
plt.gca().add_patch(Rectangle((50,100),40,30,linewidth=1,edgecolor='r',facecolor='none'))
Nach meinem Verständnis ist matplotlib eine Plotbibliothek .
Wenn Sie die Bilddaten ändern möchten (z. B. ein Rechteck auf einem Bild zeichnen), können Sie ImageDraw , OpenCV oder ähnliches von PIL verwenden .
Hier ist die ImageDraw-Methode von PIL zum Zeichnen eines Rechtecks .
Hier ist eine der OpenCV-Methoden zum Zeichnen eines Rechtecks .
Ihre Frage bezog sich auf Matplotlib, hätte aber wahrscheinlich nur nach dem Zeichnen eines Rechtecks auf einem Bild fragen sollen.
Hier ist eine weitere Frage, die sich mit dem befasst, was Sie meiner Meinung nach wissen wollten: Zeichnen Sie mit PIL ein Rechteck und einen Text darin