在图像上绘制真实的圆圈

时间:2018-03-28 08:59:38

标签: python matplotlib plot geometry scikit-image

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

img = np.zeros(474,474)

我想绘制真实的实心圆,而不是在此图像上以不同坐标为中心和固定半径绘制圆形的多边形近似值。例如,我想绘制两个圆圈,其中心(100,200)(150,372)的半径为2像素。我期待的是,在绘制圆圈之后,原始图像img的条目应该更改为圆圈所在的所有条目。 我尝试了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)

2 个答案:

答案 0 :(得分:1)

在OpenCV中绘制圆形时,可以选择几个参数,其中一个用于定义圆形边界的类型,您有4种类型:

  • 填充
  • 4条连线
  • 8-connected line
  • antialiased line

您可以在下图中看到不同的效果(按相同顺序) enter image description here

示例代码(在C ++中)

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

答案 1 :(得分:1)

在img中绘制圆圈。

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