在图像上绘制真正的实心圆

Drawing true filled circle on an image

我有一个图像,我定义如下:

img = np.zeros(474,474)

我想在此图像上以不同的坐标为中心和固定半径绘制真正的实心圆而不是多边形近似圆。例如,我想绘制两个中心为 (100,200)(150,372) 且半径为 2 像素的圆。我期望的是,在绘制圆圈之后,原始图像 img 的条目应该更改为所有存在圆圈的条目。 我尝试了 opencv cv.circlemodule 以及 skimage.draw.circle 模块,但它们生成了一些圆的多项式近似值。 我也在 matplotlib 中尝试了以下内容,但我似乎不明白如何在我的图像 img 上绘制它。 任何帮助将不胜感激。

from matplotlib.patches import Circle
img=np.zeros(474,474)
fig = plt.figure()
ax = fig.add_subplot(111)
centers = [(100,200),(150,372)]
for i in range(len(centers)):
    Circle((centers[i][0],centers[i][1]), radius= 2)

在OpenCV画圆的时候,有几个参数可以选择,其中一个是用来定义圆边界的类型,你有4种类型:

  • 已满
  • 4连线
  • 8连线
  • 抗锯齿线

下图可以看到不同的效果(顺序相同)

示例代码(C++)

circle(src,cv::Point(300,300), 10, Scalar(0,0,255), 1, FILLED);

在图片中画圈。

import cv2
import numpy as np

img = np.zeros([474, 474])

cv2.circle(img, (100,100), 5, 255, -1)
cv2.circle(img, (200,200), 30, 255, -1)

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()