Cách vẽ hình chữ nhật trên hình ảnh, như thế này:
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
im = np.array[Image.open['dog.png'], dtype=np.uint8]
plt.imshow[im]
Tôi không biết phải làm gì tiếp theo.
- python
- image
- matplotlib
72 hữu ích 0 bình luận 94k xem chia sẻ
answer
144
Bạn có thể thêm một Rectangle
bản vá vào các trục
matplotlib.
Ví dụ: [sử dụng hình ảnh từ hướng dẫn ở đây ]:
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[]
144 hữu ích 5 bình luận chia sẻ
answer
8
Bạn cần sử dụng các bản vá.
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']
8 hữu ích 0 bình luận chia sẻ
answer
5
Theo hiểu biết của tôi, matplotlib là một thư viện âm mưu.
Nếu bạn muốn thay đổi dữ liệu hình ảnh [ví dụ: vẽ hình chữ nhật trên hình ảnh], bạn có thể sử dụng ImageDraw , OpenCV của PIL hoặc một cái gì đó tương tự.
Đây là phương pháp ImageDraw của PIL để vẽ hình chữ nhật .
Đây là một trong những phương pháp của OpenCV để vẽ hình chữ nhật .
Câu hỏi của bạn đã hỏi về Matplotlib, nhưng có lẽ nên hỏi về việc vẽ một hình chữ nhật trên một hình ảnh.
Đây là một câu hỏi khác giải quyết những gì tôi nghĩ bạn muốn biết: Vẽ một hình chữ nhật và một văn bản trong đó bằng PIL
5 hữu ích 0 bình luận chia sẻ
answer
4
Không cần subplots và pyplot có thể hiển thị hình ảnh PIL, vì vậy điều này có thể được đơn giản hóa hơn nữa:
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]
Hoặc, phiên bản ngắn:
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']]
4 hữu ích 0 bình luận chia sẻ