在识别小球时,小球和摄像头都静止不动,但是摄像头有时能识别小球,有时不能,怎么解决呢?
-
import sensor, image, time import pyb, ustruct # ustruct 用于打包和解压原始数据类型 的 "类" from pyb import LED import gc LED(1).on() LED(2).on() LED(3).on() sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # must be turned off for color tracking sensor.set_auto_whitebal(False) # must be turned off for color tracking clock = time.clock() K=560#the value should be measure bus = pyb.I2C(2, pyb.I2C.SLAVE, addr=0x12) bus.deinit() # 完全关闭设备 bus = pyb.I2C(2, pyb.I2C.SLAVE, addr=0x12) print("Waiting for Arduino...") while(True): length=0 circlex=0 circley=0 clock.tick() img = sensor.snapshot().lens_corr(1.8) for c in img.find_circles(threshold = 2500, x_margin = 10, y_margin = 10, r_margin = 10, r_min = 2, r_max = 100, r_step = 2): area = (c.x()-c.r(), c.y()-c.r(), 2*c.r(), 2*c.r()) circlex=c.x()-80 circley=c.y()-60 img.draw_rectangle(area, color = (255, 255, 255))#将非红色的圆用白色的矩形框出来 Lm = 2*c.r() length = K/Lm print("FPS %f" % clock.fps()) print("length:",length) output_str="[%d,%d,%d]" % (length,circlex,circley) data = ustruct.pack("<%ds" % len(output_str), output_str) #sensor.shutdown(True) try: bus.send(ustruct.pack("<h", len(data)), timeout=10000) # Send the len first (16-bits). try: bus.send(data, timeout=10000) # Send the data second. print("Sent Data!") # Only reached on no error. except OSError as err: pass # Don't care about errors - so pass. # Note that there are 3 possible errors. A timeout error, a general purpose error, or # a busy error. The error codes are 116, 5, 16 respectively for "err.arg[0]". except OSError as err: pass del img gc.collect() #sensor.reset() #sensor.set_pixformat(sensor.RGB565) #sensor.set_framesize(sensor.QQVGA) #sensor.skip_frames(time = 3) #sensor.set_auto_gain(False) # must be turned off for color tracking #sensor.set_auto_whitebal(False) # must be turned off for color tracking
-
推测是白色的小球和背景颜色太接近导致
-
提供具体的图片。
-
-
就是颜色不够明显,阈值不好分辨。