前九个兴趣区找点都能找到,最后一个兴趣区找不同的一种颜色的时候,无法识别,后面程序也不再运行
-
import sensor, image, time,pyb from pyb import UART uart = UART(3,115200) # 打开串口3 uart.init(115200, bits=8, parity=None, stop=1) led = pyb.LED(3) # 打开LED指示灯 led.on() xgain=50 ygain=42 bigBlob = None Pcircle= None # 背景色块,元组【X,Y,W,H】 Pcircle00= None Pcircle11= None # 1号rio区域目标点,元组【中心X,中心Y,半径】 Pcircle22= None # 2号rio区域目标点,元组【中心X,中心Y,半径】 Pcircle33= None # 3号rio区域目标点,元组【中心X,中心Y,半径】 Pcircle44= None # 4号rio区域目标点,元组【中心X,中心Y,半径】 Pcircle55= None # 5号rio区域目标点,元组【中心X,中心Y,半径】 Pcircle66= None # 6号rio区域目标点,元组【中心X,中心Y,半径】 Pcircle77= None # 7号rio区域目标点,元组【中心X,中心Y,半径】 Pcircle88= None # 8号rio区域目标点,元组【中心X,中心Y,半径】 Pcircle99= None # 9号rio区域目标点,元组【中心X,中心Y,半径】 W_data=[[0,0,0], # 创建列表,用于串口发送数据,9维列表【检测FLAG,中心X,中心Y】 [0,0,0], [0,0,0], [0,0,0], [0,0,0], [0,0,0], [0,0,0], [0,0,0], [0,0,0], [0,0,0],] thresholds = [(36, 0, -14, 6, -72, 15)]#黑色 thresholds1 = [(95, 46, -128, 27, -127, 6)]#白色 thresholds2 = [(95, 46, -34, 20, 26, 127)]#黄色 sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.RGB565) # use RGB565. sensor.set_framesize(sensor.HQVGA) #240x160 HQVGA sensor.skip_frames(time=1000) # Let new settings take affect. sensor.set_auto_gain(False,6) #设置亮度增益must be turned off for color tracking sensor.set_auto_whitebal(False,(-5.119987, -6.02073, -3.059389))#设置设置红色,绿色和蓝色通道的固定增益分贝。关闭白平衡。白平衡是默认开启的,在颜色识别中,需要关闭白平衡。 clock = time.clock() # Tracks FPS. # 比较两个色块大小的函数 # 这里我们选择了pixels作为指标比对二者的代码 # 你也可以换用其它指标 例如 blob.area() def compareBlob(blob1, blob2): tmp = blob1.pixels() - blob2.pixels() if tmp == 0: return 0; elif tmp > 0: return 1; else: return -1; while(True): clock.tick() img = sensor.snapshot() #########################找黑色球板#################################### blobs = img.find_blobs(thresholds) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob #Pcircle= bigBlob.rect() Pcircle=[bigBlob.x()+12,bigBlob.y()+15,bigBlob.w()-15,bigBlob.h()-15] #####################画图辅助判断可注释############################## img.draw_rectangle(Pcircle,color=127) #####################画图辅助判断可注释############################## ###########################预估九个色块所在roi区域#################################### Pcircle1=[Pcircle[0], Pcircle[1], xgain,ygain] Pcircle2=[Pcircle[0]+xgain, Pcircle[1], xgain,ygain] Pcircle3=[Pcircle[0]+xgain*2, Pcircle[1], xgain,ygain] Pcircle4=[Pcircle[0], Pcircle[1]+ygain, xgain,ygain] Pcircle5=[Pcircle[0]+xgain, Pcircle[1]+ygain, xgain,ygain] Pcircle6=[Pcircle[0]+xgain*2, Pcircle[1]+ygain, xgain,ygain] Pcircle4=[Pcircle[0], Pcircle[1]+ygain, xgain,ygain] Pcircle5=[Pcircle[0]+xgain, Pcircle[1]+ygain, xgain,ygain] Pcircle6=[Pcircle[0]+xgain*2, Pcircle[1]+ygain, xgain,ygain] Pcircle7=[Pcircle[0], Pcircle[1]+ygain*2, xgain,ygain] Pcircle8=[Pcircle[0]+xgain, Pcircle[1]+ygain*2, xgain,ygain] Pcircle9=[Pcircle[0]+xgain*2, Pcircle[1]+ygain*2, xgain,ygain] #####################画图辅助判断可注释############################## img.draw_rectangle(Pcircle1) img.draw_rectangle(Pcircle2) img.draw_rectangle(Pcircle3) img.draw_rectangle(Pcircle4) img.draw_rectangle(Pcircle5) img.draw_rectangle(Pcircle6) img.draw_rectangle(Pcircle7) img.draw_rectangle(Pcircle8) img.draw_rectangle(Pcircle9) #####################画图辅助判断可注释############################## ###########################检测各roi区域色块#################################### ################roi1区域########################### blobs = img.find_blobs(thresholds1,roi=Pcircle1) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle11= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle11) img.draw_cross(Pcircle11[0], Pcircle11[1]) #####################画图辅助判断可注释############################## W_data[0][0]=1; W_data[0][1]=Pcircle11[0]; W_data[0][2]=Pcircle11[1]; else: W_data[0][0]=0; ################roi2区域########################### blobs = img.find_blobs(thresholds1,roi=Pcircle2) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle22= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle22) img.draw_cross(Pcircle22[0], Pcircle22[1]) #####################画图辅助判断可注释############################## W_data[1][0]=1; W_data[1][1]=Pcircle22[0]; W_data[1][2]=Pcircle22[1]; else: W_data[1][0]=0; ################roi3区域########################### blobs = img.find_blobs(thresholds1,roi=Pcircle3) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle33= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle33) img.draw_cross(Pcircle33[0], Pcircle33[1]) #####################画图辅助判断可注释############################## W_data[2][0]=1; W_data[2][1]=Pcircle33[0]; W_data[2][2]=Pcircle33[1]; else: W_data[2][0]=0; ################roi4区域########################### blobs = img.find_blobs(thresholds1,roi=Pcircle4) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle44= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle44) img.draw_cross(Pcircle44[0], Pcircle44[1]) #####################画图辅助判断可注释############################## W_data[3][0]=1; W_data[3][1]=Pcircle44[0]; W_data[3][2]=Pcircle44[1]; else: W_data[3][0]=0; ################roi5区域########################### blobs = img.find_blobs(thresholds1,roi=Pcircle5) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle55= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle55) img.draw_cross(Pcircle55[0], Pcircle55[1]) #####################画图辅助判断可注释############################## W_data[4][0]=1; W_data[4][1]=Pcircle55[0]; W_data[4][2]=Pcircle55[1]; else: W_data[4][0]=0; ################roi6区域########################### blobs = img.find_blobs(thresholds1,roi=Pcircle6) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle66= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle66) img.draw_cross(Pcircle66[0], Pcircle66[1]) #####################画图辅助判断可注释############################## W_data[5][0]=1; W_data[5][1]=Pcircle66[0]; W_data[5][2]=Pcircle66[1]; else: W_data[5][0]=0; ################roi7区域########################### blobs = img.find_blobs(thresholds1,roi=Pcircle7) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle77= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle77) img.draw_cross(Pcircle77[0], Pcircle77[1]) #####################画图辅助判断可注释############################## W_data[6][0]=1; W_data[6][1]=Pcircle77[0]; W_data[6][2]=Pcircle77[1]; else: W_data[6][0]=0; ################roi8区域########################### blobs = img.find_blobs(thresholds1,roi=Pcircle8) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle88= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle88) img.draw_cross(Pcircle88[0], Pcircle88[1]) #####################画图辅助判断可注释############################## W_data[7][0]=1; W_data[7][1]=Pcircle88[0]; W_data[7][2]=Pcircle88[1]; else: W_data[7][0]=0; ################roi9区域########################### blobs = img.find_blobs(thresholds1,roi=Pcircle9) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle99= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle99) img.draw_cross(Pcircle99[0], Pcircle99[1]) #####################画图辅助判断可注释############################## W_data[8][0]=1; W_data[8][1]=Pcircle99[0]; W_data[8][2]=Pcircle99[1]; else: W_data[8][0]=0; ################小球区域########################### blobs = img.find_blobs(thresholds2,roi=Pcircle) if blobs: bigBlob = blobs[0] for blob in blobs: if compareBlob(bigBlob, blob) == -1: bigBlob = blob Pcircle00= bigBlob.enclosing_circle() #####################画图辅助判断可注释############################## img.draw_circle(Pcircle00) img.draw_cross(Pcircle00[0], Pcircle000[1]) #####################画图辅助判断可注释############################## W_data[9][0]=1; W_data[9][1]=Pcircle00[0]; W_data[9][2]=Pcircle00[1]; else: W_data[9][0]=0; img_data = bytearray( [0x5a, W_data[0][0], W_data[0][1], W_data[0][2], W_data[1][0], W_data[1][1], W_data[1][2], W_data[2][0], W_data[2][1], W_data[2][2], W_data[3][0], W_data[3][1], W_data[3][2], W_data[4][0], W_data[4][1], W_data[4][2], W_data[5][0], W_data[5][1], W_data[5][2], W_data[6][0], W_data[6][1], W_data[6][2], W_data[7][0], W_data[7][1], W_data[7][2], W_data[8][0], W_data[8][1], W_data[8][2], # W_data[9][0], W_data[9][1], W_data[9][2], 0x5b]) uart.write(img_data) #####################打印辅助判断可注释############################## print( [W_data[0][0], W_data[0][1], W_data[0][2]], [W_data[1][0], W_data[1][1], W_data[1][2]], [W_data[2][0], W_data[2][1], W_data[2][2]], [W_data[3][0], W_data[3][1], W_data[3][2]], [W_data[4][0], W_data[4][1], W_data[4][2]], [W_data[5][0], W_data[5][1], W_data[5][2]], [W_data[6][0], W_data[6][1], W_data[6][2]], [W_data[7][0], W_data[7][1], W_data[7][2]], [W_data[8][0], W_data[8][1], W_data[8][2]], # [W_data[8][0], W_data[8][1], W_data[8][2]] ) #####################打印辅助判断可注释############################## led.toggle()#LED闪烁
-
291行到最后,缩进不对,在while死循环外面。