为什么写入for循环break之后还是重复识别
-
import time, sensor, image, math from pyb import UART import sensor, image, math uart = UART(3, 9600) sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) 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() thresholds_red = [(18, 46, -4, 26, 5, 30)] # generic_red_thresholds thresholds_green = [(47, 64, -67, -39, -128, 127)] # generic_green_thresholds thresholds_blue = [(24, 38, -128, 36, -73, -10)] # generic_blue_thresholds cx = 0, # up sample by 4 #数据1 cy = 0, # up sample by 4 #数据2 cw = 0, # up sample by 4 #数据1 ch = 0, # up sample by 4 #数据2 cj = 0, # up sample by 4 #数据1 cz = 0, # up sample by 4 #数据2 def cx1(): for cx in tuple1: if cx == 1 : clock.tick() img = sensor.snapshot() for blob in img.find_blobs(thresholds_red, pixels_threshold=200, area_threshold=200): #未设置roi # These values depend on the blob not being circular - otherwise they will be shaky. if blob.elongation() > 0.5: img.draw_edges(blob.min_corners(), color=(255,0,0)) img.draw_line(blob.major_axis_line(), color=(0,255,0)) img.draw_line(blob.minor_axis_line(), color=(0,0,255)) # These values are stable all the time. img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy()) # Note - the blob rotation is unique to 0-180 only. img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20) #识别寻找红色色块 uart.write('r')#发送完成信号 print("cx=red") break elif cx == 2 : clock.tick() img = sensor.snapshot() for blob in img.find_blobs(thresholds_green, pixels_threshold=200, area_threshold=200): #未设置roi # These values depend on the blob not being circular - otherwise they will be shaky. if blob.elongation() > 0.5: img.draw_edges(blob.min_corners(), color=(255,0,0)) img.draw_line(blob.major_axis_line(), color=(0,255,0)) img.draw_line(blob.minor_axis_line(), color=(0,0,255)) # These values are stable all the time. img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy()) # Note - the blob rotation is unique to 0-180 only. img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20) #识别寻找绿色色块 uart.write('g')#发送完成信号 print("cx=green") break elif cx == 3: clock.tick() img = sensor.snapshot() for blob in img.find_blobs(thresholds_blue, pixels_threshold=200, area_threshold=200): #未设置roi # These values depend on the blob not being circular - otherwise they will be shaky. if blob.elongation() > 0.5: img.draw_edges(blob.min_corners(), color=(255,0,0)) img.draw_line(blob.major_axis_line(), color=(0,255,0)) img.draw_line(blob.minor_axis_line(), color=(0,0,255)) # These values are stable all the time. img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy()) # Note - the blob rotation is unique to 0-180 only. img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20) #识别寻找蓝色色块 uart.write('b')#发送完成信号 print("cx=blue") break while(True): clock.tick() img = sensor.snapshot() img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens. for code in img.find_qrcodes(): img.draw_rectangle(code.rect(), color = (255, 0, 0)) print(code) qrcode2 = code.payload() cx = int(qrcode2[0:1]) cy = int(qrcode2[1:2]) cw = int(qrcode2[2:3]) ch = int(qrcode2[4:5]) cj = int(qrcode2[5:6]) cz = int(qrcode2[6:7]) print('读取') print(qrcode2) list1 = list(qrcode2) time.sleep(5) tuple1 = (cx, cy, cw, ch, cj, cz) print(tuple1) print(cx) cx1() print(cx) cy1() print(cy)
-
-
你的break只会跳出一层for的循环,我猜你想用return。