霍夫圆检测 五个球有两个检测不到
-
# Untitled - By: 81245 - 周三 7月 28 2021 import sensor, image, time ,lcd sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # 颜色跟踪必须关闭自动增益 sensor.set_auto_whitebal(False) # 颜色跟踪必须关闭白平衡 sensor.set_auto_exposure(False) lcd.init() ''' 红色 (20, 62, 31, 93, 18, 65) 蓝色 (16, 63, -24, 51, -88, -19) 绿色 (34, 72, -55, 28, 24, 59) 黑色 (0, 42, -13, 7, -18, 6) 白色 (56, 78, -9, -1, -20, -3) ''' thresholds =[(20, 62, 31, 93, 18, 65), (16, 63, -24, 51, -88, -19), (34, 72, -55, 28, 24, 59), (0, 42, -13, 7, -18, 6), (56, 78, -9, -1, -20, -3)] clock = time.clock() def max_pixel(pixle_num): Max_pixel = 0 Max_num= 0 for i in range(5) : if Max_pixel < pixle_num[i]: Max_pixel = pixle_num[i] Max_num = i return Max_num yanse = ["红色","蓝色","绿色","黑色","白色"] while(True): clock.tick() img = sensor.snapshot().lens_corr(1.3) for c in img.find_circles(threshold = 3500, x_margin = 5, y_margin = 5, r_margin = 5,r_min = 5, r_max = 100, r_step = 2): pixel_num = [0,0,0,0,0] c_rectangle = (c.x()-c.r(),c.y()-c.r(),c.r()*2,c.r()*2) print(c_rectangle) img.draw_circle(c.x(), c.y(), c.r()) #img.draw_rectangle(c_rectangle) print(c) for i in range(5): for blob in img.find_blobs([thresholds[i]],roi=c_rectangle,merge = True): pixel_num[i] = blob.pixels() this_c_color = max_pixel(pixel_num) print(yanse[this_c_color]) lcd.display(img) print(clock.fps())
我采用霍夫圆检测,为什么白色和绿色一直检测不到,是因为阴影吗
-
是因为对比度不够,边缘不够明显。
-
find_circles里的阈值改一下。
-
@kidswong999 是再加还是减小