Jawaban:
Anda dapat menambahkan Rectangle
patch ke Axes matplotlib.
Misalnya (menggunakan gambar dari tutorial di sini ):
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
bendera keRectangle
patches.Rectangle
mengatakan bahwa dua angka pertama adalah The bottom and left rectangle coordinates
. Saya melihat di sini bahwa dua angka pertama, (50.100), sesuai dengan TOP dan koordinat kiri persegi panjang. Saya bingung.
Anda perlu menggunakan tambalan.
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')
Tidak perlu untuk subplot, dan pyplot dapat menampilkan gambar PIL, jadi ini dapat disederhanakan lebih lanjut:
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)
Atau, versi singkat:
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'))
Dari matplotlib pemahaman saya adalah perpustakaan merencanakan.
Jika Anda ingin mengubah data gambar (misalnya menggambar persegi panjang pada gambar), Anda bisa menggunakan ImageDraw , OpenCV dari PIL , atau sesuatu yang serupa .
Berikut adalah metode ImageDraw PIL untuk menggambar persegi panjang .
Berikut adalah salah satu metode OpenCV untuk menggambar persegi panjang .
Pertanyaan Anda bertanya tentang Matplotlib, tetapi mungkin seharusnya hanya bertanya tentang menggambar persegi panjang pada gambar.
Berikut adalah pertanyaan lain yang membahas apa yang menurut Anda ingin Anda ketahui: Gambarlah persegi panjang dan teks di dalamnya menggunakan PIL