Hướng dẫn dùng matplotlib rectangle python

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

Hướng dẫn dùng matplotlib rectangle python

Bạn có thể thêm một Rectanglebả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()

Hướng dẫn dùng matplotlib rectangle python

144 hữu ích 5 bình luận chia sẻ

answer

8

Hướng dẫn dùng matplotlib rectangle python

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

Hướng dẫn dùng matplotlib rectangle python

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

Hướng dẫn dùng matplotlib rectangle python

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ẻ

Hướng dẫn dùng matplotlib rectangle python

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

Hướng dẫn dùng matplotlib rectangle python