关于偏转量固定不变的问题
-
import sensor, image, time from pyb import UART from pyb import Servo import json #设置阈值 red_threshold_01 = (62, 99, -9, 58, 18, 57) step = 0 x=0 #色块中心x值 c=0 #色块偏离中心程度 d=0 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(10) sensor.set_auto_whitebal(False) sensor.set_auto_gain(False) #关闭自动亮度增益,太暗了可以自行打开 sensor.set_hmirror(True) #水平镜像,方便调试 clock = time.clock() s1 = Servo(1) #P7 舵机 s1.pulse_width(1500) #舵机初始化到中间位置 uart = UART(3, 115200) while(True): img = sensor.snapshot() #查找色块,并过滤掉面积小于1200像素,且长小于30像素,宽小于40像素的色块 blobs = img.find_blobs([red_threshold_01],x_stride=5, y_stride=15) if blobs: print('sum :', len(blobs)) #我没看懂 output_str = json.dumps(blobs) #没看懂 for b in blobs: if b[2]>5 and b[3]>5: #过滤过大或者过小,根据实际修改 img.draw_rectangle(b.rect(),color=(0,0,0)) #根据色块大小画框 img.draw_cross(b.cx(), b.cy()) #根据色块中心点画十字架 x = b[5] #将cx赋值给x c=abs(80-b[5]) #把cx与中心x值的差赋值给c #下面为简单的识别舵机运动算法,具体根据实际调试修改参数,可以自行优化 if x > 82: step=step-int((x-80)*1) print('1:',step) if -800 > step: step=step+int((x-80)*1) print('2:',step) if x < 78: tep=step+int((80-x)*1) print('3:',step) if step > 900: step=step-int((80-x)*1) print('4:',step) s1.pulse_width(1500-step) #舵机旋转角度 d=1500-step print('偏转量 :',step) #若偏离程度较小则小车加速 if c < 10: if d == 1500: uart.write('fast\r') print('jia su') #得到被测物的长和宽(用于测量目标物大小数值) #print('get_w :',b[2]) #print('get_h :',b[3]) #print('get_zx :',b[5]) ```, 这段代码实行的时候,无论怎么改变摄像头对红灯的方向,偏转量都没有变,求高手指导
-
你先看一下x的值?