巡线问题为什么会出现下面的问题?
-
为什么摄像头对这黑线后卡住一会才出来线性回归线而且不是实时的
BLACK_THRESHOLD = (34, 100, -61, 77, -76, 116)#(100, 55, -35, 22, 22, 82)#(3, 41, -3, 77, 12, 70)#(0, 95, 1, 34, 36, 80) #(5, 89, 35, 75, -8, 50)# Grayscale threshold for dark things... import sensor, image, time , math ,struct from pyb import UART from struct import pack, unpack import json sensor.reset() #sensor.set_vflip(True) #sensor.set_hmirror(True) sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) # 80x60 (4,800 pixels) - O(N^2) max = 2,3040,000. #sensor.set_auto_whitebal(False) # must be turned off for color tracking #sensor.set_windowing([0,20,80,40]) sensor.skip_frames(time = 2000) # WARNING: If you use QQVGA it may take seconds clock = time.clock() # to process a frame sometimes. uart = UART(3, 115200) while(True): clock.tick() img = sensor.snapshot().binary([BLACK_THRESHOLD]) line = img.get_regression([(100,100)], robust = True) if (line): rho_err = abs(line.rho())-img.width()/2 #计算一条直线与图像中央的距离 #坐标变换 xy轴的角度 if line.theta()>90: theta_err = line.theta()-180 else: theta_err = line.theta() img.draw_line(line.line(), color = 255)#127 output_str = "%f"%(theta_err) sumA = 0 sumB = 0 data = bytearray([0x41,0x43]) uart.write(data) data = bytearray([0x02,8]) for b in data: sumB = sumB + b sumA = sumA + sumB uart.write(data) float_value = theta_err float_bytes = pack('f', float_value) for b in float_bytes: sumB = sumB + b sumA = sumA + sumB uart.write(float_bytes) float_value = rho_err*0.1 float_bytes = pack('f', float_value) for b in float_bytes: sumB = sumB + b sumA = sumA + sumB uart.write(float_bytes) data = bytearray([sumB, sumA]) uart.write(data) print(float_value,theta_err) #print(rho_err*0.1) else: sumA = 0 sumB = 0 data = bytearray([0x41,0x43]) uart.write(data) data = bytearray([0x02,8]) for b in data: sumB = sumB + b sumA = sumA + sumB uart.write(data) float_value = 200 float_bytes = pack('f', float_value) for b in float_bytes: sumB = sumB + b sumA = sumA + sumB uart.write(float_bytes) float_value = 0 float_bytes = pack('f', float_value) for b in float_bytes: sumB = sumB + b sumA = sumA + sumB uart.write(float_bytes) data = bytearray([sumB, sumA]) uart.write(data) #print(theta_err) print(float_value)
-
line = img.get_regression([(100,100)], robust = True)改为line = img.get_regression([(255,255)], robust = True)
-
@kidswong999 但是为什么识别一下卡那不会动半天出来线性回归不是一直动的
-
@g23b robust = True会大大增加运行时间,而且你把图像分辨率调大了,所以运算时间特别长。
参考这个代码:
https://book.openmv.cc/example/09-Feature-Detection/linear-regression-fast.html