import sensor, image, time
from pyb import UART,LED
import json
write_threshold=(0, 19, 28, -33, 122, -2)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.VGA)
sensor.set_windowing((504,480))
sensor.set_vflip(True)
sensor.set_hmirror(True)
sensor.skip_frames(time = 2000)
clock = time.clock()
quyu=[278,278,278,278,278,278,278,278,278,278]
LED(1).on()
LED(2).on()
LED(3).on()
lx=0
x=0
k=0
t=0
m=0
last=0
l=0
uart=UART(3,115200)
def find_max(blobs):
max_size=0
for blob in blobs:
if blob.pixels()>max_size:
max_blob=blob
max_size = blob.pixels()
return max_blob
while(True):
clock.tick()
img=sensor.snapshot ()
for n in range(0,10):
blobs = img.find_blobs([write_threshold],roi=[193,480-48*(n+1),172,48],x_stride=20,y_stride=20,x_stride=400)
img.draw_rectangle((193,480-48*(n+1),172,48),color=(231,188,105))
max_blob=find_max(blobs)
if blobs:
for blob in blobs:
img.draw_cross(max_blob.cx(), max_blob.cy())
quyu[n]=max_blob.cx()
m+=1
if m>=2:
k+=(max_blob.cx()-lx)/48
lx=max_blob.cx()
x=x+quyu[n]
blobs = img.find_blobs([write_threshold],roi=[53,80,100,80])
max_blob=find_max(blobs)
if blobs:
for blob in blobs:
img.draw_cross(max_blob.cx(), max_blob.cy())
t+=max_blob.cx()
blobs = img.find_blobs([write_threshold],roi=[53,240,452,80])
max_blob=find_max(blobs)
if blobs:
for blob in blobs:
l=max_blob.w()
if m!=0:
last=x/10+k*30/m
if l>200:
t=666
if k>1:
k=1
if k<-1:
k=-1
print(last-278,t)
output_str="%.3d, %.3d" % (last,t)
lx=0
x=0
k=0
t=0
m=0
uart.write('\n'+output_str+'\r')
img.draw_rectangle((53,80,100,80),color=(231,188,105))
img.draw_rectangle((53,240,452,80), color=(231,188,105))
B
bw4c 发布的帖子
-
RE: 脱机与连电脑得到的值不同
-
RE: 脱机与连电脑得到的值不同
import sensor, image, time from pyb import UART,LED import json write_threshold=(0, 19, 28, -33, 122, -2) sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.VGA) sensor.set_windowing((504,480)) sensor.set_vflip(True) sensor.set_hmirror(True) sensor.skip_frames(time = 2000) clock = time.clock() quyu=[278,278,278,278,278,278,278,278,278,278] LED(1).on() LED(2).on() LED(3).on() lx=0 x=0 k=0 t=0 m=0 last=0 l=0 uart=UART(3,115200) def find_max(blobs): max_size=0 for blob in blobs: if blob.pixels()>max_size: max_blob=blob max_size = blob.pixels() return max_blob while(True): clock.tick() img=sensor.snapshot () for n in range(0,10): blobs = img.find_blobs([write_threshold],roi=[193,480-48*(n+1),172,48],x_stride=20,y_stride=20,x_stride=400) img.draw_rectangle((193,480-48*(n+1),172,48),color=(231,188,105)) max_blob=find_max(blobs) if blobs: for blob in blobs: img.draw_cross(max_blob.cx(), max_blob.cy()) quyu[n]=max_blob.cx() m+=1 if m>=2: k+=(max_blob.cx()-lx)/48 lx=max_blob.cx() x=x+quyu[n] blobs = img.find_blobs([write_threshold],roi=[53,80,100,80]) max_blob=find_max(blobs) if blobs: for blob in blobs: img.draw_cross(max_blob.cx(), max_blob.cy()) t+=max_blob.cx() blobs = img.find_blobs([write_threshold],roi=[53,240,452,80]) max_blob=find_max(blobs) if blobs: for blob in blobs: l=max_blob.w() if m!=0: last=x/10+k*30/m if l>200: t=666 if k>1: k=1 if k<-1: k=-1 print(last-278,t) output_str="%.3d, %.3d" % (last,t) lx=0 x=0 k=0 t=0 m=0 uart.write('\n'+output_str+'\r') img.draw_rectangle((53,80,100,80),color=(231,188,105)) img.draw_rectangle((53,240,452,80), color=(231,188,105))