openMV串口处理数据问题
-
openmv串口检测到数据,现在为了确保数据的稳定性,我想把十个数放到一个数组中,然后通过串口向单片机发送,我写好时候为什么只返回0,并没有我想要的坐标值
import sensor, image, time from pyb import UART uart = UART(3, 19200) uart.init(4800, bits=8, parity=None, stop=1, timeout_char=1000) target_threshold = (58, 76, -13, 8, -84, 70) ball_threshold =(58, 76, -13, 8, -84, 70)#待修改 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(10) sensor.set_auto_whitebal(False) clock = time.clock() def find_c(threshold,roi): number=0 blobs = img.find_blobs(threshold,roi=roi,x_stride=10, y_stride=50) for b in blobs: max_size=0 if b[2]*b[3] > max_size: max_size1 = b[2]*b[3] if max_size1>2000: max_size1=max_size1 img.draw_rectangle(b[0:4], color = (0, 0, 0)) img.draw_cross(b[5], b[6], color = (0, 0, 0)) number=b[5] return number def delay(a): for i in range (1000): if i==999: uart.write(a) def average_zhi(num,n): sum=0 a=[] i=0 if num: a=[] a.append(num) i=i+1 if i==n-1: a.sort() for i in a[1,b-1]: sum=sum+i c=b-2 sum=int(sum/c) return sum while(True): clock.tick() img = sensor.snapshot() roi1=[0,0,70,60] roi2=[90,0,60,60] roi_ball=[0,0,160,60]#待修改 blobs1 = img.find_blobs([target_threshold],roi=roi1,x_stride=10, y_stride=50) blobs2 = img.find_blobs([target_threshold],roi=roi2,x_stride=10, y_stride=50) blobs_blob = img.find_blobs([ball_threshold],roi=roi_ball) if blobs1 and blobs2: first_number=find_c([target_threshold],roi1) second_number=find_c([target_threshold],roi2) average_number=(first_number+second_number)/2 average_number=int(average_number) average=average_zhi(average_number,10) print(average)
-
你的这个逻辑有问题啊
def find_c(threshold,roi): number=0 blobs = img.find_blobs(threshold,roi=roi,x_stride=10, y_stride=50) for b in blobs: max_size=0 if b[2]*b[3] > max_size: max_size1 = b[2]*b[3] if max_size1>2000: max_size1=max_size1 img.draw_rectangle(b[0:4], color = (0, 0, 0)) img.draw_cross(b[5], b[6], color = (0, 0, 0)) number=b[5] return number
既然 max_size一直是0,
那if b[2]*b[3] > max_size岂不是一直成立关键max_size1>2000 number才变。
所以这个函数返回0喽。
-
def average_zhi(num,n): sum=0 a=[] i=0 if num: a=[] a.append(num) i=i+1 if i==n-1: a.sort() for i in a[1,b-1]: sum=sum+i c=b-2 sum=int(sum/c) return sum
这个代码有问题吗
-
@kidswong999 这个代码主要是对数据进行处理的
-
我又不知道你的代码要做什么,没法判断。
你要自己测试一下。
-
@kidswong999 我想用这个代码对返回的十个坐标点数据进行加工处理,返回这是个数的平均值