用matplotlib和numpy在图像上绘制圆圈

ork*_*kan 13 python plot numpy matplotlib imshow

我有浮动 x/y阵列,其中包含圆心.

import matplotlib.pylab as plt
import numpy as np
npX = np.asarray(X)
npY = np.asarray(Y)
plt.imshow(img)
// TO-DO
plt.show()
Run Code Online (Sandbox Code Playgroud)

我想通过使用这个中心在我的图像上显示圆圈.我怎样才能实现这一目标?

tmd*_*son 25

您可以使用matplotlib.patches.Circle补丁执行此操作.

对于您的示例,我们需要遍历X和Y数组,然后为每个坐标创建一个圆形补丁.

这是一个将圆圈放在图像顶部的示例(来自matplotlib.cbook)

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle

# Get an example image
import matplotlib.cbook as cbook
image_file = cbook.get_sample_data('grace_hopper.png')
img = plt.imread(image_file)

# Make some example data
x = np.random.rand(5)*img.shape[1]
y = np.random.rand(5)*img.shape[0]

# Create a figure. Equal aspect so circles look circular
fig,ax = plt.subplots(1)
ax.set_aspect('equal')

# Show the image
ax.imshow(img)

# Now, loop through coord arrays, and create a circle at each x,y pair
for xx,yy in zip(x,y):
    circ = Circle((xx,yy),50)
    ax.add_patch(circ)

# Show the image
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 它是情节中的圆圈,而不是图像上的圆圈。img 不会改变 (2认同)