检测图像中的简单圆,并使用numpy找到其半径

时间:2016-11-01 12:28:23

标签: python numpy

我的图片中有一个简单的圆圈。

如何使用numpy检测圆圈并找到它的半径?

我试过学习但不能。我想从你在这里回答的程序中学习。

目前我所知道的只有:

from scipy import misc
f = misc.imread("/path/to/file.png")
# then dont know what to do

这是图片 - https://c2.staticflickr.com/6/5476/14135136623_3973d3f03c_b.jpg

1 个答案:

答案 0 :(得分:0)

我现在假设图像总是由一个黑色图像中的一个非黑色圆圈组成。

我还假设你并不特别关心算法的效率。

循环覆盖图像中的所有像素,保持所有白色像素的x和y坐标的总和,计数,最小值和最大值(仅x或y所需的最小值/最大值,而不是两者都需要)。这样的事情(粗略地说 - 我没有scipy安装atm):

circle_count = 0

circle_sum_x = 0
circle_sum_y = 0

circle_min_x = 0
circle_max_x = 0

for y in range(image_height):
    for x in range(image_width):
        if pixel(x,y) is not black:
            circle_count += 1

            circle_sum_x += x
            circle_sum_y += y

            circle_min_x = min(circle_min_x, x)
            circle_max_x = max(circle_max_y, y)

if circle_count == 0:
    print "No circle found!"
else:
    circle_center_x = circle_sum_x / circle_count
    circle_center_y = circle_sum_y / circle_count
    circle_radius = (circle_max_x - circle_min_x) / 2