Matplotlib 中如何在影象上繪製矩形

Jinku Hu 2023年1月30日
  1. 在 Matplotlib 中繪製矩形
  2. 在 Matplotlib 中的影象上繪製矩形
Matplotlib 中如何在影象上繪製矩形

當我們需要在 Matplotlib 中的影象或純圖形上繪製矩形時,應通過 add_patch 方法將 matplotlib.patches 中的 rectangle patch 新增到軸上。

matpotlib patch 是具有外觀和邊緣顏色的 2D artist。Matplotlib 具有如下的 patch

  • Arc
  • Arrow
  • ArrowStyle
  • BoxStyle
  • Circle
  • CirclePolygon
  • ConnectionPatch
  • ConnectionStyle
  • Ellipse
  • FancyArrow
  • FancyArrowPatch
  • FancyBboxPatch
  • Patch
  • Path
  • PathPatch
  • Polygon
  • Rectangle
  • RegularPolygon
  • Shadow
  • Wedge

Rectangle patch 繪製一個指定左下角座標和指定寬度和高度的矩形。

Rectangle(xy, width, height, angle=0.0, fill=True, **kwargs)

xy 是一個長度為 2 的元組,用於指定要繪製的矩形的左下角的座標,

width 是矩形的寬度

height 是矩形的高度,

angle 是逆時針角度,以度為單位。

fill 指定矩形是否用 facecolor 填充。

一些有效的 kwargs 如下,

  • edgecolor:矩形邊緣的顏色
  • facecolor:矩形的填充色

在 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()

矩形 patch 由建構函式建立,

patches.Rectangle((1, 1), 1, 2, edgecolor="blue", facecolor="red", fill=True)

其左下角的座標為 (1, 1),其寬度為 1,高度為 2

邊緣顏色指定為 blue,同時填充顏色為 red

軸物件的 add_patch(P) 方法在軸上新增一個 Patch

Matplotlib_draw 一個具有填充顏色的矩形

如果將 fill 設定為 False,即使 facecolor 已經指定了某些顏色了,矩形也不會被填充。

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()

Matplotlib_繪製一個沒有填充顏色的矩形

在 Matplotlib 中的影象上繪製矩形

如果我們需要在 Matplotlib 中的影象上繪製一個矩形,則它與上述方法類似,但是需要額外的步驟來獲取軸 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()

plt.imshow(im) 顯示影象 butterfly.jpg,而軸 Axes 的控制代碼可以通過函式 plt.gca() 獲得,gca 是獲取當前軸 get current axes 的首字母縮寫。

Matplotlib_在影象上繪製一個矩形

作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook