可以运行,但是一个程序可以像上面那样用两个while吗
H
hmwy
@hmwy
0
声望
2
楼层
272
资料浏览
0
粉丝
0
关注
hmwy 发布的帖子
-
capture failed:-4
import sensor import image import time import network import usocket import sys import sensor import image import time import network import usocket import sys import math import pyb from pyb import UART from pyb import LED # 变量分配区 # 绿色追踪 threshold = [53, 238] Frame_Cnt = 0 fCnt_tmp = [0, 0] count = 0 rangefinder = 0 # 局部函数定义区 red_led = LED(1) green_led = LED(2) blue_led = LED(3) ir_led = LED(4) def get_rangefinder(uart_line): try: if (len(uart_line) < 8): return 0xFF if(uart_line[0] != 0x59): return 0xFF if(uart_line[1] != 0x59): return 0xFF if(uart_line[2] != None and uart_line[3] != None): return uart_line[3] * 256 | uart_line[2] except: return 20 pass def ExceptionVar(var): data = [] data.append(0) data.append(0) if var == -1: data[0] = 0 data[1] = 0 else: data[0] = var & 0xFF data[1] = var >> 8 return data # 串口3 P4 P5 = TX RX # 串口1 P1 P2 = TX RX def UART_Send(FormType, Loaction0, Location1, range_finder=0): global Frame_Cnt global fCnt_tmp Frame_Head = [170, 170] Frame_End = [85, 85] fFormType_tmp = [FormType] Frame_Cnt += 1 if Frame_Cnt > 65534: FrameCnt = 0 fHead = bytes(Frame_Head) fCnt_tmp[0] = range_finder & 0xFF fCnt_tmp[1] = range_finder >> 8 # if(range_finder != 0): # fCnt_tmp[1] = range_finder fCnt = bytes(fCnt_tmp) fFormType = bytes(fFormType_tmp) fLoaction0 = bytes(ExceptionVar(Loaction0)) fLoaction1 = bytes(ExceptionVar(Location1)) fEnd = bytes(Frame_End) FrameBuffe = fHead + fCnt + fFormType + fLoaction0 + fLoaction1 + fEnd return FrameBuffe # main函数区 sensor.set_contrast(3) sensor.set_gainceiling(16) sensor.set_framesize(sensor.VGA) sensor.set_windowing((320, 240)) sensor.set_pixformat(sensor.GRAYSCALE) #sensor.skip_frames(time = 2000) sensor.set_auto_gain(False, value=100) clock = time.clock() uart = UART(3, 115200) uart_Rangefinder = UART(1, 115200) #文件导入特征点 kpts1 = image.load_descriptor("/desc.orb") #img = sensor.snapshot() start = pyb.millis() while pyb.elapsed_millis(start)<10000: clock.tick() img = sensor.snapshot() kpts2 = img.find_keypoints(max_keypoints=150, threshold=10, normalized=False) if kpts2: match = image.match_descriptor(kpts1, kpts2, threshold=85) if(match.count()>10): img.draw_rectangle(match.rect()) img.draw_cross(match.cx(), match.cy(), size=10) P0 = match.x() P1 = match.y() Type = 306 print(Type,P0,P1) else: print("no find kpts") green_led.off() Type = 0xFF P0 = -1 P1 = -1 uart.write(UART_Send(Type, P0, P1)) while(True): clock.tick() img = sensor.snapshot() circles = img.find_circles(threshold=4000, x_margin=100, y_margin=100, r_margin=10, r_min=2, r_max=100, r_step=2) if circles: green_led.on() for circle_ in circles: img.draw_circle(circle_.x(), circle_.y(), circle_.r(), color=(255, 0, 0)) img.draw_cross(circle_.x(), circle_.y()) P0 = circle_.x() P1 = circle_.y() Type = 202 print(Type, P0, P1) # uart.write(UART_Send(Type, P0, P1, rangefinder)) else: print("no find circle") green_led.off() Type = 0xFF P0 = -1 P1 = -1