我的图片中有一个简单的圆圈。
如何使用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
答案 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