在图像上绘制实心圆形

3
我有一张图片,定义如下:
img = np.zeros(474,474)
我想在不同的坐标点上画真实的填充圆,而不是多边形近似圆,半径固定。例如,我想在中心坐标为(100,200)和(150,372),半径为2像素的位置上画两个圆。我期望绘制圆后,原始图像img中所有圆存在的地方都会变成1。 我尝试了opencv的cv.circle模块以及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)

你能发布完整的代码吗? - Venkatesh Wadawadagi
@Venkatesh 这是我所有的代码。它定义了一个图像,我正在尝试使用 matplotlib circle 模块在我的图像上绘制圆形。 - Silver moon
在OpenCV中,绘制圆形时有不同的参数可以定义线条类型,这些参数定义了应该着色的连接像素数。您可以尝试它们并确定是否符合您的需求。例如,-1将填充圆形。 - Crapsy
@Crapsy,您指的是哪种实现方式?能否请您详细说明一下,最好附上代码?另外,我正在寻找一个真正填充的圆形。 - Silver moon
大部分问题文本都相当不清楚。任何圆都是对真实圆的近似。在任何情况下,如何将圆形添加到绘图中在这个问题中已经显示。因此,我想我们可以将其关闭为重复,或者您需要明确说明这对您没有帮助的程度。 - ImportanceOfBeingErnest
2个回答

4

在图片中绘制圆形。

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

2
在OpenCV中绘制圆形时,可以选择几个参数之一来定义圆形边界类型,其中有4种类型:
  • 填充
  • 4连通线
  • 8连通线
  • 抗锯齿线
您可以在以下图像中看到不同的效果(按相同顺序)enter image description here 以下是一个C++示例代码。
circle(src,cv::Point(300,300), 10, Scalar(0,0,255), 1, FILLED);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接