圆识别报错的问题,不知道原因是什么
-
sensor.reset() #摄像头初始化 #.set_pixformat(sensor.RGB565) #设置为彩色模式 #sensor.set_framesize(sensor.QQVGA) #画幅为QQVGA即分辨率为160*120 sensor.set_pixformat(sensor.GRAYSCALE) #sensor.set_framesize(sensor.QVGA) sensor.set_framesize(sensor.VGA) sensor.skip_frames(time = 2000) #跳过起始画面,获取稳定图像 sensor.set_auto_gain(False) #在色块检测模式下关闭自动补光 sensor.set_auto_whitebal(False) #关闭白平衡 clock = time.clock() while(True): #lens_corr 为了去除畸变, 1.8 是默认参数,可以根据自己实际情况调整 # img = sensor.snapshot().lens_corr(1.8) img = sensor.snapshot() # 圆形类有 4 个参数值: 圆心(x, y), r (半径)和 magnitude(量级); # 量级越大说明识别到的圆可信度越高。 # `threshold` 参数控制找到圆的数量,数值的提升会降低识别圆形的总数。 # `x_margin`, `y_margin`, and `r_margin`控制检测到接近圆的合并调节. # r_min, r_max, and r_step 用于指定测试圆的半径范围。 for c in img.find_circles(threshold = 2000, x_margin =5, y_margin = 10, r_margin = 5,r_min = 2, r_max = 5, r_step = 2): #画红色圆做指示 img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0)) print(c)
#打印圆形的信息
-
因为你分辨率太大了,圆形匹配非常费内存,所以内存不够就报错了,解决办法是把分辨率调小,或者换OpenMV4 Plus,但是速度也慢。
-
@kidswong999 谢谢!你好,请问如何理解img.find_circles(threshold = 2000, x_margin =5, y_margin
= 10, r_margin = 5,r_min = 2, r_max = 5, r_step = 2)这个函数的 x_margin, y_margin, r_margin 这3个参数,对这句“控制检测到接近圆的合并调节”不太理解,如果圆有大有小呢?
-
如果两个圆的中心x距离小于5,就认为是一个圆。